begin 
	comment
		321.a60:			oct '90
		Erik Schoenfelder

		This is the
			0. Start with a natural number n.
			1. If n is odd, set n to be 3 * n + 1
			   If n is even, set n to be n / 2
			   Repeat step 1 until n is equal 1.
			2. Print the number of repetitons.
		fun.
		And: Who knows, if this termimates for any n...
	;

	integer procedure doit (n);
	value n;
	integer n;
	begin 
		boolean procedure odd (x);
			value x; integer x;
			odd := n notequal (n 'div' 2) * 2;

		integer count;

		count := 0;
	do:
		if odd (n) then 
			n := 3 * n + 1
		else 
			n := n 'div' 2;

		count := count + 1;
	
		if n notequal 1 then goto do;

		doit := count;
	end;


	integer i, n, val, max, NN;

	NN := 12;

	vprint ("Hi!\n                n           iterations\n");
	for i := 1 step 1 until NN do 
		vprint (i, doit (i));
	vprint ("...");

	vprint ("\nnow looking for maxima:");
	vprint ("\n                n           iterations\n");

	n := 0;  max := -1;
	for i := 1 step 1 until NN do begin 
	do:
		n := n + 1;
		val := doit (n);
		if val notgreater max then goto do;

		vprint (n, val);
		max := val;
	end;
	vprint ("...\ndone.")
end