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