explore(a,mx,n,p,m) =	\
	my (v=[n]);	\
	for (i=1, m,	\
		my (nn = n*prime(p)^a[i]);	\
		if (nn>mx, break);	\
		v = concat(v, explore(a,mx,nn,p+1,i))	\
	);	\
	return (v)

iterate(a,mx) =	\
	return (vecsort((explore(a,min(2^a[#a], mx),1,1,#a))))

limit = 525125950364605590000000000000000

a = [1]
while (1, br=a[#a] > log(limit); a = iterate(a, limit); if (br, break))
for (n=1, #a, print (n " " a[n]))

quit