#include <sys/queue.h>
#include <stdio.h>



int main() {













struct req {
	int pri, rqr;
	LIST_ENTRY(req) by_pri;
	LIST_ENTRY(req) by_rqr;
};

LIST_HEAD(reql, req);

struct reql reqs_pri_global;
struct reql reqs_rqr_42;
struct reql reqs_rqr_17;
struct reql reqs_rqr_99;

LIST_INIT(&reqs_pri_global);
LIST_INIT(&reqs_rqr_42);
LIST_INIT(&reqs_rqr_17);
LIST_INIT(&reqs_rqr_99);

struct req
	r42a = {1, 42},
	r42b = {2, 42},
	r17a = {2, 17},
	r17b = {3, 17},
	r17c = {4, 17},
	r99a = {3, 99};

LIST_INSERT_HEAD(&reqs_pri_global, &r17c, by_pri);
LIST_INSERT_HEAD(&reqs_pri_global, &r99a, by_pri);
LIST_INSERT_HEAD(&reqs_pri_global, &r17b, by_pri);
LIST_INSERT_HEAD(&reqs_pri_global, &r42b, by_pri);
LIST_INSERT_HEAD(&reqs_pri_global, &r17a, by_pri);
LIST_INSERT_HEAD(&reqs_pri_global, &r42a, by_pri);

LIST_INSERT_HEAD(&reqs_rqr_42, &r42b, by_rqr);
LIST_INSERT_HEAD(&reqs_rqr_42, &r42a, by_rqr);

LIST_INSERT_HEAD(&reqs_rqr_17, &r17c, by_rqr);
LIST_INSERT_HEAD(&reqs_rqr_17, &r17b, by_rqr);
LIST_INSERT_HEAD(&reqs_rqr_17, &r17a, by_rqr);

LIST_INSERT_HEAD(&reqs_rqr_99, &r99a, by_rqr);







struct req *cur;
LIST_FOREACH(cur, &reqs_pri_global, by_pri)
	printf("{%d %d} ", cur->pri, cur->rqr);
printf("| ");
LIST_FOREACH(cur, &reqs_rqr_42, by_rqr)
	printf("{%d %d} ", cur->pri, cur->rqr);
printf("| ");
LIST_FOREACH(cur, &reqs_rqr_17, by_rqr)
	printf("{%d %d} ", cur->pri, cur->rqr);
printf("| ");
LIST_FOREACH(cur, &reqs_rqr_99, by_rqr)
	printf("{%d %d} ", cur->pri, cur->rqr);
printf("\n");

}
