#include <stdio.h>
#include <string.h>
#define max 100
//2021/7/3-12:40
//2021/7/3-15:15
char is_error(char* s)
{
if (((s[0] == 'j') && (s[1] == 'o')) ||
((s[0] == 'J') && (s[1] == 'O')))
{
return 1;
}
char c = s[0];
if ((c != 'J') &&
(c != 'Q') &&
(c != 'K') &&
(c != 'A') &&
((c < '1') || (c > '9')))
{
return 1;
}
if ((s[0] == '1') && (s[1] != '0'))
{
return 1;
}
return 0;
}
int get_val(char c)
{
int v;
switch (c)
{
case 'J':
{
v = 11;
break;
}
case 'Q':
{
v = 12;
break;
}
case 'K':
{
v = 13;
break;
}
case 'A':
{
v = 1;
break;
}
default:
v = c - '0';
break;
}
return v;
}
int create_table(int* table, int* expr)
{
int v[13];
int i, j, k, l, m, n;
int s[4];
int ss[4][4];
int cnt;
cnt = 0;
for (i = 0; i < 13; i++)
{
v[i] = i + 1;
}
for (i = 0; i < 13; i++)
{
//memset(ss, 0, 4 * 4 * sizeof(int));
for (j = 0; j < 13; j++)
{
s[0] = v[i] + v[j];
s[1] = v[i] - v[j];
s[2] = v[i] * v[j];
s[3] = v[i] / v[j];
for (k = 0; k < 13; k++)
{
ss[0][0] = s[0] + v[k];
ss[0][1] = s[0] - v[k];
ss[0][2] = s[0] * v[k];
ss[0][3] = s[0] / v[k];
ss[1][0] = s[1] + v[k];
ss[1][1] = s[1] - v[k];
ss[1][2] = s[1] * v[k];
ss[1][3] = s[1] / v[k];
ss[2][0] = s[2] + v[k];
ss[2][1] = s[2] - v[k];
ss[2][2] = s[2] * v[k];
ss[2][3] = s[2] / v[k];
ss[3][0] = s[3] + v[k];
ss[3][1] = s[3] - v[k];
ss[3][2] = s[3] * v[k];
ss[3][3] = s[3] / v[k];
for (l = 0; l < 13; l++)
{
for (m = 0; m < 4; m++)
{
for (n = 0; n < 4; n++)
{
if (ss[m][n] + v[l] == 24)
{
expr[cnt] = (m << 4) | (n << 2) | 0;
table[cnt++] = (v[i] << 12) | (v[j] << 8) | (v[k] << 4) | v[l];
}
else if (ss[m][n] - v[l] == 24)
{
expr[cnt] = (m << 4 | n << 2) | 1;
table[cnt++] = (v[i] << 12) | (v[j] << 8) | (v[k] << 4) | v[l];
}
if (ss[m][n] * v[l] == 24)
{
expr[cnt] = (m << 4 | n << 2) | 2;
table[cnt++] = (v[i] << 12) | (v[j] << 8) | (v[k] << 4) | v[l];
}
if (ss[m][n] / v[l] == 24)
{
expr[cnt] = (m << 4) | (n << 2) | 3;
table[cnt++] = (v[i] << 12) | (v[j] << 8) | (v[k] << 4) | v[l];
}
}
}
}
}
}
}
return cnt;
}
int check_table(int* table, int size, int v)
{
int i;
for (i = 0; i < size; i++)
{
if (table[i] == v)
{
return i;
}
}
return -1;
}
int is_24(int* table, int size, int* c)
{
int i;
int j = -1;
int v;
int a[24][4] = {
{0,1,2,3},
{0,1,3,2},
{0,2,1,3},
{0,2,3,1},
{0,3,1,2},
{0,3,2,1},
{1,0,2,3},
{1,0,3,2},
{1,2,0,3},
{1,2,3,0},
{1,3,0,2},
{1,3,2,0},
{2,0,1,3},
{2,0,3,1},
{2,1,0,3},
{2,1,3,0},
{2,3,0,1},
{2,3,1,0},
{3,0,1,2},
{3,0,2,1},
{3,1,0,2},
{3,1,2,0},
{3,2,0,1},
{3,2,1,0}
};
for (i = 0; (i < 24) && (j == -1); i++)
{
v = (c[a[i][0]] << 12) | (c[a[i][1]] << 8) | (c[a[i][2]] << 4) | c[a[i][3]];
j = check_table(table, size, v);
}
return j;
}
int main()
{
char e[4] = {'+', '-', '*', '/'};
char cvt[16] = {' ', 'A', '2','3','4','5','6','7','8','9','1','J','Q','K'};
int c[4];
char s[max];
int i = 0, j, k, n;
int table[20000];
int expr[20000];
int size;
int v;
size = create_table(table, expr);
while (scanf("%s", s) != EOF)
{
if (is_error(s))
{
printf("ERROR");
return 0;
}
c[i++] = get_val(s[0]);
}
i = is_24(table, size, c);
if (i> 0)
{
v = table[i];
for (j = 0, n = 0; j < 4; j++)
{
k = (v >> 4 * (3 - j)) & 0xf;
s[n++] = cvt[k];
if (k == 10)
{
s[n++] = '0';
}
s[n++] = e[(expr[i] >> 2 * (2 - j)) & 0x3];
//check '*'
}
s[n - 1] = 0;
printf(s);
}
else
{
printf("NONE");
}
return 0;
}