big = 1 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++)

A002113(n, L=logint(n, 10))=(n-=L=10^max(L-(n<11*10^(L-1)), 0))*L+fromdigits(Vecrev(digits(if(n<L, n, n\10)))) \\ M. F. Hasler, Sep 11 2018

pal = A002113

i=1	\\ running total = i-th palindrome

other() = {
	my (u=i-1, v=i+1);
	my (pali=pal(i));

	while (u>0,
		my (du=pali-pal(u), dv=pal(v)-pali, d=min(du,dv));
		if (!seen(d),
			if (d==du,
				i=u;
				return (d);
			);
			if (d==dv,
				i=v;
				return (d);
			);
		);
		if (d==du, u--);
		if (d==dv, v++);
	);

	while (1,
		my (d=pal(v)-pali);
		if (!seen(d),
			i=v;
			return (d);
		);

		v++;
	);
}

for (n=1, 10 000, see(a=other()); print (n " " a))

quit