var
top,j,n,m:integer;
s:array[0..100] of integer;
Procedure print;
Var i:integer;
begin
if top>1 then
begin write(n,'=',s[1]);
for i:=2 to top do write('+',s[i]);
writeln;
end;
end;
Function sum(top:integer):integer;
Var i,t:integer;
begin
t:=0;
for i:=1 to top do t:=t+s[i];
//sum:=t;
exit(t);
end;
Function cr(top:integer):boolean;
Var i:integer;
begin
cr:=true;
for i:=1 to top-1 do
if s[i]>s[i+1] then cr:=false;
end;
begin
fillchar(s,sizeof(s),0);
read(n);
top:=1;
repeat
inc(s[top]); m:=sum(top);
if m<=n then
if (m=n) and cr(top) then print
else inc(top)
else begin s[top]:=0; dec(top); end;
until top=0;
end.