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