#include <iostream>
#include <math.h>
using namespace std;
int main()
{
int x=0,n,i,z;
int tab[20];
cin>>n;
z=n;
while(z>2)
{
z=z/2;
x++;
}
tab[0]=x;
cout << n-pow(2,x) << endl;
int suma;
suma=n-pow(2,x);
for (int i=1; suma>2; i++)
{
int z=0;
int pomocnicza;
pomocnicza=suma;
while (pomocnicza > 2)
{
pomocnicza/=2;
z++;
}
tab[0+i]=z;
suma=n-pow(2,x-i);
}
for(x; x>0; x--)
{
int f=x;
for (int i=0; i<f; i++)
cout<<"2^"<<tab[x-i]<<" + ";
}
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8bWF0aC5oPgoKCnVzaW5nIG5hbWVzcGFjZSBzdGQ7CgppbnQgbWFpbigpCnsKICAgIGludCB4PTAsbixpLHo7CiAgICBpbnQgdGFiWzIwXTsKICAgIGNpbj4+bjsKICAgIHo9bjsKCiAgICB3aGlsZSh6PjIpCiAgICB7CiAgICAgICAgej16LzI7CiAgICAgICAgeCsrOwogICAgfQogICAgdGFiWzBdPXg7CgogICAgY291dCA8PCBuLXBvdygyLHgpIDw8IGVuZGw7CiAgICBpbnQgc3VtYTsKICAgIHN1bWE9bi1wb3coMix4KTsKCgogICAgZm9yIChpbnQgaT0xOyBzdW1hPjI7IGkrKykKICAgICAgICB7CiAgICAgICAgICAgIGludCB6PTA7CiAgICAgICAgICAgIGludCBwb21vY25pY3phOwogICAgICAgICAgICBwb21vY25pY3phPXN1bWE7CiAgICAgICAgICAgIHdoaWxlIChwb21vY25pY3phID4gMikKICAgICAgICB7CiAgICAgICAgcG9tb2NuaWN6YS89MjsKICAgICAgICB6Kys7CgoKCgogICAgICAgIH0KICAgICAgICB0YWJbMCtpXT16OwogICAgICAgIHN1bWE9bi1wb3coMix4LWkpOwogICAgICAgICB9CgogICAgZm9yKHg7IHg+MDsgeC0tKQogICAgewogICAgICAgIGludCBmPXg7CiAgICAgICAgZm9yIChpbnQgaT0wOyBpPGY7IGkrKykKICAgICAgICBjb3V0PDwiMl4iPDx0YWJbeC1pXTw8IiArICI7CiAgICB9CiByZXR1cm4gMDsKfQo=