seen = 0	\\ mask of values seen so far
unseen = 1	\\ least value not yet seen
other(p) = my (v=unseen); while (bittest(seen, v)>0 || issquarefree(p*v), v++); seen += 2^v; while (bittest(seen, unseen), unseen++); return (v)

a = 4;	\\ to force a(1)=1
for (n=1, 2 000, a = other(a); print (n " " a))
quit