	function sort( var r : list; n : integer ) : list;
	var	temp : list;

	begin
	if r = nil then sort := nil
	else	if n>1 then
		sort := merge( sort( r, n div 2 ),
				sort( r, (n+1) div 2 ))
	else	begin
		temp := r;
		r := r^.next;
		temp^.next := nil;
		sort := temp
		end
	end;
