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
****************************************************************/