function hail(integer n) if remainder(n,2)=0 then n /= 2 else n = 3*n+1 end if return n end function function step(integer edx) integer n = getd("hail",edx) if n=1 then return 0 end if n = hail(n) setd("hail",n,edx) setd("count",getd("count",edx)+1,edx) setd("results",getd("results",edx)&n,edx) return 1 end function sequence dicts = {} procedure main() for i=1 to 12 do integer d = new_dict() setd("hail",i,d) setd("count",0,d) setd("results",{i},d) dicts &= d end for bool done = false while not done do done = true for i=1 to 12 do if step(dicts[i]) then done = false end if end for end while done = false integer i = 1 while not done do done = true for j=1 to 12 do sequence res = getd("results",dicts[j]) if i