#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;
}
