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