#include <bits/stdc++.h>
using namespace std;
const int N=2010;
struct node
{
int num;
char op;
bool flag;
};
map<char,int> op;
string str;
stack<node> s;
queue<node> q;
void change()
{
int num;
node tmp;
for(int i=0;i<str.size();i++)
{
if(isdigit(str[i]))
{
tmp.flag=true;
tmp.num=str[i]-'0';
q.push(tmp);
}
else
{
tmp.flag=false;
while(!s.empty() && op[str[i]]<=op[s.top().op])
{
q.push(s.top());
s.pop();
}
tmp.op=str[i];
s.push(tmp);
}
}
while(!s.empty())
{
q.push(s.top());
s.pop();
}
}
int cal()
{
int num1,num2;
node cur,tmp;
while(!q.empty())
{
cur=q.front();
q.pop();
if(cur.flag==true) s.push(cur);
else
{
num2=s.top().num;
s.pop();
num1=s.top().num;
s.pop();
tmp.flag=true;
if(cur.op=='+') tmp.num=num1+num2;
else if(cur.op=='-') tmp.num=num1-num2;
else if(cur.op=='x') tmp.num=num1*num2;
else if(cur.op=='/') tmp.num=num1/num2;
s.push(tmp);
}
}
return s.top().num;
}
int main()
{
std::ios::sync_with_stdio(false);
cin.tie(0);
cout.tie(0);
int n; cin>>n;
op['+']=op['-']=1;
op['x']=op['/']=2;
for(int i=0;i<n;i++)
{
cin>>str;
while(!s.empty()) s.pop();
change();
int res=cal();
if(res==24) cout<<"Yes"<<endl;
else cout<<"No"<<endl;
}
return 0;
}
05-21
608