allocate mem(2^30) big = 10 000 000 s = 0 S = Set([]) unseen = 1 seen(v) = if (v < big, bit test(s, v), set search(S, v)) see(v) = if (v < big, s = bit or(s, 2^v), S = set union(S, Set([v]))); while (seen(unseen), unseen++) { a = vector(10 001, k, -1); u = 0; for (n=0, oo, if (n<=1, v = n, if (v%2==0 && !seen(v/2), v = v/2, v = 3*v + (v%2) ); ); see(v); if (v<#a && a[1+v]<0, a[1+v]=n; while (a[1+u]>=0, print (u " " a[1+u]); u++; if (u==#a, break (2); ); ); ); ); } quit