program d;
var
 pole: array[0..40] of integer;

procedure Init;
var
 i: integer;
begin
  pole[0]:=1;
  pole[1]:=2;
  for i:=2 to 40 do pole[i]:=pole[i-1]+pole[i-2];
end;

function strtoint(s:string): integer;
var
  i: integer;
  Sum: integer;
begin
  Sum:=0;
  for i:=1 to Length(s) do 
    begin
      if (s[i]='1') then Sum:=Sum+Pole[Length(S)-i];
    end;
  strtoint:=sum;
end;

function inttostr(x: integer): string;
var
 S:String;
 i,j: integer;
 WasOne: boolean;
begin
 WasOne:=false;
 S:=''; j:=0;
 { while (pole[j]<=x) do inc(j);}
 for i:=40 downto 0 do 
   begin
    if (pole[i]<=x) then
      begin
        s:=s+'1';
	x:=x-pole[i];
	WasOne:=true;
      end else
        if (WasOne) then s:=s+'0';
   end;
  inttostr:=s;
end;

var
 i: integer;
 s1, s2,s3,s4: string;
 l: integer;
begin
  s1:=''; s2:=''; s3:=''; s4:='';
  Init;
  repeat
    Readln(s1);
    if (s1<>'') then
      begin
        s2:=copy(s1, 1, pos(' ', s1)-1);
        delete(s1, 1, pos(' ',s1));
        s3:=inttostr(strtoint(s1)+strtoint(s2));
	l:=length(s3);
	for i:=1 to length(s3)-length(s1)+1 do s1:=' '+s1;
	for i:=1 to length(s3)-length(s2)+2 do s2:=' '+s2;
	s4:='';
	for i:=1 to length(s3) do s4:=s4+'-';
        writeln(s2);
	writeln('+',s1);
        writeln('  ',s4);
	writeln('  ',s3);
      end;
  until s1='';
end.