const
  n=16777215;
var
  a:array[0..n] of byte;
  b:array[0..127] of longint;
  i,j:longint;
  x:int64;
begin
  for i:=1 to n do a[i]:=127;
  writeln('Initialization finished');
  a[1]:=0;a[2]:=1;
  for i:=2 to n do
  begin
    x:=1;
    while x<=n do
    begin
      if i+x<=n then
      begin
        j:=i+x;
        if a[i]+1<a[j] then a[j]:=a[i]+1;
      end;
      x:=x*i;
    end;
  end;
  for i:=1 to 127 do b[i]:=0;
  for i:=1 to n do
  if b[a[i]]=0 then
  b[a[i]]:=i;
  for i:=1 to 127 do
  if b[i]>0 then
  writeln(i,' ',b[i]);
end.