#include<bits/stdc++.h> using namespace std; map<string, int> table; vector<int> path(4, 0); vector<char> vis(4, false); bool found = false; void init(map<string, int>& table) { for(int i = 2; i <= 10; i++) table[to_string(i)] = i; table["A"] = 1; table["J"] = 11; table["Q"] = 12; table["K"] = 13; } string id(int x) { for(auto it : table) if(it.second == x) return it.first; return "NAN";} bool dfs(vector<int>& num, vector<char>& ops, int begin, int result) { if(begin == num.size() && result == 24) { stringstream ss; ss << id(path[0]) << ops[0] << id(path[1]) << ops[1] << id(path[2]) << ops[2] << id(path[3]); cout << ss.str() << endl; found = true; return true; } for(int i = 0; i < num.size(); i++) { if(vis[i]) continue; vis[i] = true; path[begin] = num[i]; { ops[begin-1] = '+'; if(dfs(num, ops, begin+1, result + path[begin])) return true; ops[begin-1] = '-'; if(dfs(num, ops, begin+1, result - path[begin])) return true; ops[begin-1] = '*'; if(dfs(num, ops, begin+1, result * path[begin])) return true; ops[begin-1] = '/'; //if(result % path[begin] == 0) if(dfs(num, ops, begin+1, result / path[begin])) return true; } vis[i] = false; } return false; } int main(void) { #ifndef ONLINE_JUDGE ifstream cin("in.txt"); #endif init(table); string str[4]; while(cin >> str[0] >> str[1] >> str[2] >> str[3]) { vector<int> num; for(auto s : str) if(table.count(s)) num.push_back(table[s]); if(num.size() != 4) {cout << "ERROR" << endl; continue;} vector<char> ops(3); for(int i = 0; i < 4; i++) { path[0] = num[i]; vis[i] = true; if(dfs(num, ops, 1, path[0])) break; vis[i] = false; } if(!found) cout << "NONE" << endl; } return 0; }