with(linalg): P:=proc(q) local c, d, k, n, t: print(0);
for n from 1 to q do c:=convert(n, base, 10): t:=[]:
for k from 1 to nops(c) do t:=[op(t), 0]: od: d:=t: t:=[]:
for k from 1 to nops(c) do t:=[op(t), d]: t[k, -k]:=1: od:
if permanent(evalm(toeplitz(c) &* t))=n then print(n); fi:
od: end: P(10^8);