uses crt;
var a:array[1..1000000] of longint;
n:longint;
procedure xuat(p:longint);
var i:longint;
begin
write(n,'=');
for i:=1 to p-2 do write(a[i],'+');
writeln(a[p-1]);
end;
procedure try(i,p,t:longint);
var j:longint;
begin
if t<n then
begin
for j:=i to n do
begin
a[p]:=j;
if t+j<=n then
begin
inc(t,j);
try(j,p+1,t);
dec(t,j);
end;
end;
end
else xuat(p);
end;
begin
clrscr;
readln(n);
try(1,1,0);
readln;
end.