{
TASK:phrope
LANG:PASCAL
}
var
 a,b,x,y:array [0..60] of byte; {x=2a; y=b/2}
 out:boolean;
 i,j,k,l,n,m,xc,yc:integer;
 ch:boolean;
 c:char;

 function cmp(a,b:array of byte; n,m:integer):integer;
  var i:integer; fl:boolean;
  begin
    if n>m then cmp:=1
    else if m>n then cmp:=-1
    else
     begin
       fl:=false;
       for i:=n downto 1 do
        if a[i]>b[i] then begin cmp:=1; fl:=true; end
        else if a[i]<b[i] then begin cmp:=-1; fl:=true; end;
       if not fl then cmp:=0;
     end;
  end;

 procedure po2(a:array of byte; n:integer; var x:array of byte; var xc:integer);
  var i,k,l:integer;
  begin
    l:=0;
    for i:=n downto 1 do
     begin
       k:=a[i]*2;
       x[i]:=(k+l) mod 10;
       l:=(k+l) div 10;
     end;
    xc:=n;
    if l>0 then begin for i:=n+1 downto 2 do x[i]:=x[i-1]; x[1]:=l; xc:=n+1; end;
  end;

  procedure plus1(a:array of byte; n:integer; var x:array of byte; var xc:integer);
  var i,k,l:integer;
  begin
    l:=1;
    for i:=n downto 1 do
     begin
       k:=a[i];
       x[i]:=(a[i]+l) mod 10;
       l:=(a[i]+l) div 10;
     end;
    xc:=n;
    if l>0 then begin for i:=n+1 downto 2 do x[i]:=x[i-1]; x[1]:=l; xc:=n+1; end;
  end;


  procedure del2(a:array of byte; n:integer; var x:array of byte; var xc:integer);
   var i,k,l:integer;
   begin
     l:=a[1]; i:=1; xc:=1; k:=1;
     while i<=n do
      begin
        while l<2 do
         if i<=n then
          begin inc(xc); if k=1 then x[xc-1]:=0; inc(i); l:=l*10+a[i]; k:=1; end
         else begin i:=n+2; break; end;
        if i<=n then begin
          x[xc]:=l div 2;
          l:=l mod 2; end;
         k:=0;
      end;
     k:=1; while (x[k]=0)and(k<=n) do if x[k]>0 then break else inc(k);
     for j:=1 to xc-k+1 do x[j]:=x[j+k-1]; xc:=xc-k; if k>n then begin xc:=1; x[1]:=0; end;
     if (i=n+2)and(l>0) then plus1(x,xc,x,xc);
   end;

  procedure sub(a,b:array of byte; n,m:integer; var x:array of byte; var xc:integer);
   var i,j,k,l:integer;
   begin
     for i:=n downto n-m+1 do
      b[i]:=b[i-(n-m)];
     for i:=1 to n-m do b[i]:=0;
     for i:=n downto 1 do
      begin
        if a[i]>=b[i] then x[i]:=a[i]-b[i]
        else
         begin
           j:=i-1;
           while a[j]=0 do begin a[j]:=9; dec(j); end;
           dec(a[j]); x[i]:=a[i]+10-b[i];
         end;
      end;
     xc:=n;
     i:=1; while (x[i]=0)and(i<=n) do if x[i]>0 then break else inc(i);
     for j:=1 to xc-i+1 do x[j]:=x[j+i-1]; xc:=xc-i+1; if i>n then begin xc:=1; x[1]:=0; end;
   end;

  procedure print(a:array of byte; n:integer);
   var i:integer;
   begin for i:=1 to n do write(a[i]); out:=true; end;

begin
  out:=false;
  c:='0';
  while ('0'<=c)and(c<='9') do begin inc(i); read(c); a[i]:=ord(c)-ord('0'); end; n:=i-1;
  i:=0; c:='0';
  while ('0'<=c)and(c<='9') do begin inc(i); read(c); b[i]:=ord(c)-ord('0'); end; m:=i-1;
  a[n+1]:=0; b[m+1]:=0;

  if cmp(a,b,n,m)=0 then writeln('0 0')
  else if ((a[1]=0)and(n=1))or((b[1]=0)and(m=1)) then writeln('0 0')
  else
   begin
     ch:=false;
     if cmp(a,b,n,m)=1 then
      begin
        ch:=true;
        i:=n; n:=m; m:=i;
        move(a,x,sizeof(a)); move(b,a,sizeof(b)); move(x,b,sizeof(x));
      end;

     po2(a,n,x,xc);

     if (cmp(x,b,xc,m)=-1)or(cmp(x,b,xc,m)=0) then
      begin
        if not ch then begin print(a,n); write(' '); print(x,xc); writeln; end
        else begin print(x,xc); write(' '); print(a,n); writeln; end;
      end
     else
      if b[m] mod 2=1 then
       begin
         del2(b,m,x,xc);
         if (cmp(a,x,n,xc)=1)or(cmp(a,x,n,xc)=0) then
          begin
            sub(b,a,m,n,x,xc);
            po2(x,xc,y,yc);
            if not ch then begin print(x,xc); write(' '); print(y,yc); writeln; end
            else begin print(y,yc); write(' '); print(x,xc); writeln; end;
          end
       end
      else
       begin
         del2(b,m,x,xc);
         if (cmp(a,x,n,xc)=1)or(cmp(a,x,n,xc)=0) then
          begin
            if not ch then begin print(x,xc); write(' '); print(b,m); writeln; end
            else begin print(b,m); write(' '); print(x,xc); writeln; end;
          end;
       end;

     if not out then writeln('0 0');
   end;
end.