\\ search terms up to 2 ^ max w - 1
max w = 10

a = vector(2^max w-1)
unseen = 1

{
	forstep (k=1, oo, 2,
		s = Set();
		f = 1/k;
		while (f>=1, f/=2);
		while (!set search(s, f),
			for (w=1, max w,
				n = floor(f*2^w);
				if (n>0 && !a[n],
					a[n] = k;
					while (unseen <= #a && a[unseen],
						print (unseen " " a[unseen]);
						unseen++;
					);
				);
			);
				
			s = setunion(s, Set(f));
			f = frac(f*2);
		);

		if (unseen > #a,
			break;
		);
	);
}

quit