program ciklinis_skaicius;
  { 97 u‘davinys }
  const ILGIS = 8;
  type skaicius = array [1..ILGIS] of 0..9;
       lentele = array [1..ILGIS] of boolean;
                       { skaitmen—, ¨einan‡i— ¨ sek… lentel‚ }

  function ciklinis (sk: skaicius; kiek: integer): boolean;
  { ar skai‡ius, turintis "kiek" skaitmen— yra ciklinis }
    var buta: lentele;
        nariai, { kiek skaitmen— ¨traukta ¨ sek… }
        i: integer;
  begin
    for i := 1 to kiek do
      buta[i] := false;  { seka kol kas tu˛‡ia }
    nariai := 0;         { ji neturi nei vieno nario }
    i := 1;
    while not buta [i] do
      begin
        buta[i] := true;
        nariai := nariai + 1;
        i := (i + sk[i] - 1) mod kiek + 1; { pereiname per sk[i] skaitmen— }
      end;
    ciklinis := (nariai = kiek) and (i = 1)
  end; { ciklinis }

  procedure uzrasyti (n: longint;
                      var sk: skaicius; var kiek: integer);
  { skai‡i— n u‘ra˛o masyvu ir randa jo skaitmen— kiek¨ }
    var i, nn: longint;
  begin
    { randame n skaitmen— skai‡i— }
    kiek := 0;
    nn := n;
    while nn > 0 do
      begin
        kiek := kiek + 1;
        nn := nn div 10
       end;
    { skai‡i— u‘ra˛ome masyvu }
    for i := kiek downto 1 do
      begin
        sk[i] := n mod 10;
        n := n div 10
      end
  end;

  function rasti (n: longint): longint;
  { randa ma‘iausi… ciklin¨ skai‡i—, ne ma‘esn¨ u‘ n }
    var sk: skaicius;
        kiek: integer; { kiek skai‡ius turi skaitmen— }
  begin
    repeat
      uzrasyti (n, sk, kiek);
      n := n + 1;
    until ciklinis (sk, kiek);
    rasti := n - 1;
  end; { ciklinis }

  var n: longint;
begin
  readln (n);
  writeln (rasti(n));
end.