program d;
var
 pole: array[0..90] of longint;

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

function strtoint(s:string): longint;
var
  i: integer;
  Sum: longint;
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: longint): string;
var
 S:String;
 i,j: integer;
 WasOne: boolean;
begin
 WasOne:=false;
 S:=''; j:=0;
 { while (pole[j]<=x) do inc(j);}
 for i:=90 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;
  if (s='') then s:='0';
  inttostr:=s;
end;

var
 i: integer;
 s1, s2,s3,s4: string;
 l: integer;
 sum: longint;
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));
	sum:=strtoint(s1)+strtoint(s2);
        s3:=inttostr(sum);
	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.