#include<iostream>
#include<unordered_map>
#include<vector>
#include<cmath>
using namespace std;
unordered_map<int,string>m;
vector<int>_2;
int n;
int main()
{
m[0]="2(0)";
m[1]="2";
m[2]="2(2)";
m[3]="2(2+2(0))";
m[4]="2(2(2))";
m[5]="2(2(2)+2(0))"; // 2(2(2+2(0))+2)
m[6]="2(2(2)+2)";
m[7]="2(2(2)+2+2(0))";
m[8]="2(2(2+2(0)))";
m[9]="2(2(2+2(0))+2(0))";
m[10]="2(2(2+2(0))+2)";
m[11]="2(2(2+2(0))+2+2(0))";
m[12]="2(2(2+2(0))+2(2))";
m[13]="2(2(2+2(0))+2(2)+2(0))";
m[14]="2(2(2+2(0))+2(2)+2)";
cin>>n;
int t=n;
while(n>0)
{
int s=0;
while(true)
{
int t=pow(2,s);
if(n-t<0)
{
n-=pow(2,s-1);
_2.push_back(s-1);
break;
}
++s;
}
}
for(int i=0;i<_2.size();++i)
{
int t=_2[i];
cout<<m[t];
if(i!=_2.size()-1)cout<<"+";
}
return 0;
}