{ Program solving the Labyrinth problem, IPSC 99.
  Program reads data from standard input.
  It is supposed that input contains numbers in usual decimal notation. }

program mouse;

var x,direction,node,oldnode:longint;

function reverse(x:longint):longint;
{reverses the number}
var y:longint;
begin
  y:=0;
  while x>0 do begin
    y:=y*10+(x mod 10);
    x:=x div 10;
  end;
  reverse:=y;
end;

function digits(x:longint):integer;
{counts number of digits of a number in a decimal system}
var y:integer;
begin
  if x=0 then begin
    digits:=1;
  end
  else begin
    y:=0;
    while x>0 do begin
      y:=y+1;
      x:=x div 10;
    end;
    digits:=y;
  end;
end;


begin
  while not(eof) do begin
    readln(x);

    {in this simulation x is number displayed,
     node is current node,
     oldnode is previous node
     direction is next node}

    node:=0; oldnode:=0;
    while (x>0) and (node<>1) do begin
      case node of    {compute direction}
        2: case x mod 3 of
             0: direction:=7;
             1: direction:=1;
             2: direction:=4;
           end;

        4: if reverse(x)>x then direction:=6
                           else direction:=2;

        6: if not odd(digits(x)) then direction:=4
                                 else direction:=7;

        7: case ((x mod 7)*(x mod 7)) mod 7 of
             0: direction:=2;
             1: direction:=6;
             2: direction:=8;
             4: direction:=0;
           end;

        8: if (x mod 5) in [2,3] then direction:=7
                                 else direction:=9;

        9: if oldnode=8 then direction:=0 else direction:=8;

        0: if ((x div 100) mod 10)<=7 then direction:=7
                                      else direction:=9;
      end;
      oldnode:=node;
      node:=direction;
      x:=x-1;
    end;
    if x=0 then x:=-1;
    writeln(x);
  end;
end.

