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++)

t = 0
z = 0

ok(v, keep) = {
	my (d=digits(v), tt=t, zz=z);
	for (i=1, #d,
		if ((tt+=d[i])/zz++ > 1,
			return (0);
		);
	);

	if (keep,
		[t,z] = [tt,zz];
	);

	return (1);
}

other() = {
	my (can = [0]);
	for (w=1, oo,
		my (newcan = []);
		for (c=1, #can,
			for (d=if (w==1, 1, 0), 9,
				my (v=can[c]*10 + d);
				if (ok(v, !seen(v)),
					if (!seen(v),
						see(v);
						return (v),
						newcan = concat(newcan, v);
					);
				);
			);
		);
		can = newcan;
	);
}

for (n=1, 10 000, print (n " " other() " " unseen))

quit