#include <iostream>
#include <vector>
#include <string>
#include <unordered_map>
#include <algorithm>
using namespace std;
// 映射牌面到对应的整数值
unordered_map<string, int> cardMap = {
{"A", 1}, {"2", 2}, {"3", 3}, {"4", 4},
{"5", 5}, {"6", 6}, {"7", 7}, {"8", 8},
{"9", 9}, {"10", 10}, {"J", 11}, {"Q", 12}, {"K", 13}
};
// 所有运算符
char ops[] = {'+', '-', '*', '/'};
// 从左到右计算,不含括号
bool compute(int a, int b, char op, int &res) {
if (op == '+') res = a + b;
else if (op == '-') res = a - b;
else if (op == '*') res = a * b;
else {
if (b == 0) return false; // 除数不能为0
res = a / b; // 整数除法
}
return true;
}
string solve(vector<string>& cards) {
// 检查是否包含大小王
for (auto& card : cards) {
if (card == "joker" || card == "JOKER") return "ERROR";
}
// 枚举所有牌的排列
sort(cards.begin(), cards.end());
do {
// 枚举所有3个运算符的组合
for (char op1 : ops) {
for (char op2 : ops) {
for (char op3 : ops) {
int v1 = cardMap[cards[0]];
int v2 = cardMap[cards[1]];
int v3 = cardMap[cards[2]];
int v4 = cardMap[cards[3]];
int r1, r2, r3;
if (!compute(v1, v2, op1, r1)) continue;
if (!compute(r1, v3, op2, r2)) continue;
if (!compute(r2, v4, op3, r3)) continue;
if (r3 == 24) {
return cards[0] + op1 + cards[1] + op2 + cards[2] + op3 + cards[3];
}
}
}
}
} while (next_permutation(cards.begin(), cards.end()));
return "NONE";
}
int main() {
vector<string> cards(4);
for (int i = 0; i < 4; ++i) {
cin >> cards[i];
}
cout << solve(cards) << endl;
return 0;
}