#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <cstring>
#include<iostream>
#include<algorithm>
#include<vector>
using namespace std;

//描述
//    每个正数都可以用指数形式表示。例如,137 = 2 的 7 次方 + 2 的 3 次方 + 2 的 0 次方。
//我们用a(b)的形式来表示a的b次方。那么137就可以表示为2(7) + 2 (3) + 2 (0)。
//由于7 =2的2次方 + 2 + 2 的 0 次方,且 3 = 2 + 2 的 0 次方
//所以137最终表示为 2(2(2)+2+2(0))+2 (2 + 2 (0)) + 2 (0)。给定一个正数 n
//你的任务是将 n 用仅包含数字 0 和 2 的指数形式表示出来。

//输入描述
//对于每一个测试用例,输入文件中包含一个正整数 n(n <= 20000)。

//输出描述
//对于每一个测试用例,你应该在单独的一行上输出 n 的指数形式。
//注意,这一行中不应该有任何额外的空白字符。

//2(7) + 2 (3) + 2 (0)   ->>>>     2(2(2)+2+2(0))+2 (2 + 2 (0)) + 2 (0)
string toTwo(int n) {
    if (n == 0) {
        return "0";
    }
    vector<int> exp;
    for (int i = 20; i >= 0; i--) {
        if ((n & (1 << i)) != 0) {
            exp.push_back(i);
        }
    }
    string res = "";
    for (int i = 0; i < exp.size(); i++) {
        if (i != 0) {
            res += "+";
        }
        if (exp[i] == 1) {
            res += "2";
        } else {
            res += "2(" + toTwo(exp[i]) + ")";
        }
    }
    return res;
}

int main() {
    int n;
    scanf("%d", &n);
    string str = toTwo(n);
    printf("%s\n", str.c_str());
    return 0;
}