seen = []

other(p,pp) = {
	while (#seen < p, seen = concat(seen, 0));
	for (v=2, oo,
		if (v!=pp && gcd(p,v)>1 && !bit test(seen[p], v),
			if (p>1,
				seen[p] += 2^v;
			);
			return (v);
		);
	);
}

{
	pp = -1;
	p = 0;

	for (n=1, 10 000,
		v = if (n==1, 2, other(p, pp));
		print (n " " v);
		pp = p;
		p = v;
	);
}

quit