program J;
var
x: integer;
begin
readln(x);
while x > 1 do
begin
if (x div 2) * 2 = x then {x is even}
x := x div 2
else
x := 3 * x + 1;
writeln(x);
end;
readln;
end.
procedure halt(var p, x, result: string);
procedure selfhalt(var p, result: string);
program contrary; var p, answer: string; begin readln(p) selfhalt(p, answer) if answer = 'Halts on self' then while true do answer := 'x'; end.
halt cannot exist!