hailstone := proc( N ) local n := N, HS := Array([n]); while n > 1 do if type(n,even) then n := n/2; else n := 3*n+1; end if; HS(numelems(HS)+1) := n; end do; HS; end proc;