#include <stdio.h>
typedef struct data
{
int Item;
char s[7];
int ans;
}a[100];
a data;
void judge(a data, int n);
int main()
{
int n = 0;
scanf("%d", &n);
for(int i = 0; i < n; i++)
{
scanf("%s", data[i].s);
}
judge(data, n);
return 0;
}
void judge(a data, int n)
{
for(int i = 0; i < n; i++)
{
for(int loop = 0; loop < 4; loop++)
{
data[i].s[2*loop] = data[i].s[2*loop] - '0';
}
int k = 3;
for(int j = 0; j < k; j++) //遍历x /
{
if(data[i].s[2*j + 1] == 'x' || data[i].s[2*j + 1] == '/')
{
if(data[i].s[2*j + 1] == 'x')
{
data[i].s[2*j] = data[i].s[2*j] * data[i].s[2*j + 2];
}
else
{
data[i].s[2*j] = data[i].s[2*j] / data[i].s[2*j + 2];
}
for(int m = j + 1; m < k; m++)
{
data[i].s[2*m] = data[i].s[2*m + 2]; //移动数字
data[i].s[2*m - 1] = data[i].s[2*m + 1]; //移动运算符
}
k--,j--;
}
}
data[i].ans = data[i].s[0];
for(int j = 0; j < k; j++) //遍历+ -
{
if(data[i].s[2*j + 1] == '+')
{
data[i].ans = data[i].s[2*j] + data[i].s[2*j + 2];
data[i].s[2*j + 2] = data[i].ans;
}
else
{
data[i].ans = data[i].s[2*j] - data[i].s[2*j + 2];
data[i].s[2*j + 2] = data[i].ans;
}
}
if(data[i].ans == 24)
{
printf("Yes\r\n");
}
else
{
printf("No\r\n");
}
}
}