program kubine_saknis;
  { 33 u‘davinys }
{----------------------------------------------------------}
  const ilgis   = 11;
  type  didelis = array [1..ilgis] of 0..9; { didelis skai‡ius }

  procedure kubas (var sk : didelis );
    var s     : longint;
        rasta : boolean;
    procedure kelti_kubu (s : longint; var sk : didelis );
      { skai‡i— s kelia kubu }
      var kv       : longint;
          perk,      { perk‚limas }
          post,      { post–mis nuo skai‡iaus prad‘ios dauginant }
          skaitmuo, i, j, tarp : integer;
          k : didelis; { vienas daugikli— - pradinio skai‡iaus kvadratas }
    begin
      kv := s * s;  { skai‡i— pakeliame kvadratu }
      i := ilgis;
      for i := Ilgis downto 1 do   { jŤ perražome masyvu }
         begin
           k[i] := kv mod 10;
           kv := kv div 10
         end;
      for i := Ilgis downto 1 do  { inicializuojame rezultat… }
          sk[i] := 0;
      post := Ilgis;
      while s <> 0 do     { dauginama iž kiekvieno s skaitmens }
        begin
          skaitmuo := s mod 10;
          perk := 0;
          for j := post downto 1 do
              begin
                tarp := k[Ilgis - (post - j)] * skaitmuo + perk + sk[j];
                sk[j] := tarp mod 10;
                perk := tarp div 10;
               end;
           post := post - 1;
           s := s div 10;
        end;
    end;
    function skirtingi (sk : didelis) : boolean;
     { ar visi nat–raliojo skai‡iaus sk skaitmenys skirtingi }
      var s     : set of 0..9;  { skai‡iaus skaitmen— aib‚ }
          skirt : boolean;
          i     : integer;
    begin
      i := 1;       { praleid‘iame nulius skai‡iaus priekyje }
      while sk[i] = 0 do
        i := i + 1;
      s := [ ];  skirt := true;
      while (i <= Ilgis) and skirt do
        begin
          if sk[i] in s  { ar skaitmuo yra aib‚je s }
             then skirt := false
             else s := s + [sk[i]];
          i := i + 1
        end;
      skirtingi := skirt
    end;
  begin
    s := 3000;      { skai‡ius, kurio kubas jau viržija 10 skaitmen— }
    rasta := false;
    while not rasta do
      begin
        s := s - 1;
        kelti_kubu (s, sk);
        rasta := skirtingi (sk);
      end;
  end;
{----------------------------------------------------------}
   var sk : didelis;
       i : integer;
 begin
    kubas (sk);
    i := 1;
    while sk[i] = 0 do
      i := i + 1;
    while i <= ilgis do  { spausdiname rezultat… }
      begin
        write (sk[i]);
        i := i + 1
      end;
       writeln
 end.