#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;
struct reql reqs_rqr_42;
struct reql reqs_rqr_17;
struct reql reqs_rqr_99;

LIST_INIT( &reqs_pri );
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, &r17c, by_pri );
LIST_INSERT_HEAD( &reqs_pri, &r99a, by_pri );
LIST_INSERT_HEAD( &reqs_pri, &r17b, by_pri );
LIST_INSERT_HEAD( &reqs_pri, &r42b, by_pri );
LIST_INSERT_HEAD( &reqs_pri, &r17a, by_pri );
LIST_INSERT_HEAD( &reqs_pri, &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, 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" );

}
