//n最多不超过2的15次方,所以可以枚举1到14的表达式,初步遍历一遍生成基础式子,
//此基础式子形如:2(9)+2(7)+...,再遍历一遍此基础式子,将中间1到14的数字替换为对应表达式即可。
#include <iostream>
#include <string>
#include <cmath>
using namespace std;
string change(char n){
if(n=='0') return "0";
if(n=='2') return "2";
if(n=='3') return "2+2(0)";
if(n=='4') return "2(2)";
if(n=='5') return "2(2)+2(0)";
if(n=='6') return "2(2)+2";
if(n=='7') return "2(2)+2+2(0)";
if(n=='8') return "2(2+2(0))";
if(n=='9') return "2(2+2(0))+2(0)";
if(n=='0'+10) return "2(2+2(0))+2";
if(n=='0'+11) return "2(2+2(0))+2+2(0)";
if(n=='0'+12) return "2(2+2(0))+2(2)";
if(n=='0'+13) return "2(2+2(0))+2(2)+2(0)";
if(n=='0'+14) return "2(2+2(0))+2(2)+2";
return "";
}
int main() {
string ans="";
int num;
cin>>num;
int n=14;
while(num!=0){//生成基础式
if(num>pow(2,n)){
ans+="2(";
ans+=('0'+n);
ans+=")+";
num-=pow(2,n);
}else if(num==pow(2,n)){
ans+="2(";
ans+=('0'+n);
ans+=")";
num-=pow(2,n);
}
n--;
}
//cout<<ans<<endl;
for(int i=0;i<ans.length();){//替换基础式
if(ans[i]==')'){
string str=change(ans[i-1]);
int n=str.length();
ans=ans.substr(0,i-1)+str+ans.substr(i);
i=i+n;
}
i++;
}
for(int i=0;i<ans.length();i++){
if(ans[i]==')'&&ans[i-1]=='('){
ans=ans.substr(0,i-1)+ans.substr(i+1);
}
}//将“2()“变为“2”
cout<<ans;
return 0;
}