var a,b:array[1..100000] of longint;
s1,s2:string;
n,i,j,m,num,ans:longint;
begin
readln(n);
ans:=0;
for i:=2 to 36 do
begin
m:=n; num:=0;
while m<>0 do
begin
inc(num);
a[num]:=m mod i;
m:=m div i;
end;
s1:=''; s2:='';
for j:=1 to num do
begin
s1:=s1+chr(a[j]+48);
s2:=chr(a[j]+48)+s2;
end;
if s1=s2 then
begin
inc(ans);
b[ans]:=i;
end;
end;
writeln(ans);
for i:=1 to ans do
writeln(b[i]);
end.
/**************************************************************
Problem: 2101
User: admin
Language: Pascal
Result: Wrong Answer
****************************************************************/