class List( int value; List next; );

void printList( List a; ) {
	print( "{ " );
	while ( a != null ) {
		print( a.value );
		a = a.next;
		if ( a != null )
			print( ", " );
		}
	print( " }" );
	}

void appendHead( var List a; int data; ) {
	a = new List{ data, a };
	}

void insertList( var List a; int data; ) {
	if ( a == null || data <= a.value )
		appendHead( a, data );
	else
		insertList( a.next, data );
	}

List a5 = new List{ 5, null };
List a3 = new List{ 3, a5 };
List a1 = new List{ 1, a3 };
List a = a1;
insertList( a, 4 );
printList( a );
println( "" );
