#include <iostream>
#include <cstring>
#include <string.h>
using namespace std;
int num(char c)
{
if(c>='0' && c<='9')
return 1;
return 0;
}
int symbol(char c)
{
if(c=='+' || c=='-' || c=='x' || c=='/')
return 1;
return 0;
}
int front_num(string ca,int i,int* f_num)//符号前面的数
{
int front=i-1,front_num=0,f=1;
while(num(ca[front]) && front>=0)
{
front_num+=f*(ca[front]-'0');
f*=10;
front--;
(*f_num)++;
}
return front_num;
}
int back_num(string ca,int i,int* b_num)//符号后面的数
{
int back=i+1,back_num=0,b=1;
while(num(ca[back]))
{
back_num=back_num*b+(ca[back]-'0');
if(b==1)
b*=10;
back++;
(*b_num)++;
}
return back_num;
}
void calculate(string ca)//现在的代码
{
int i=0;
while(ca[i])
{
if(ca[i]=='x' || ca[i]=='/')
{
int f_num=0,b_num=0;//统计前面的数字离i有多远
int front=front_num(ca, i,&f_num),back=back_num(ca, i,&b_num),result=0,num_num=0;
int f=front,b=back;//num_num为两个数字加上符号的位数
while(f>0)
{
f/=10;
num_num++;
}
while(b>0)
{
b/=10;
num_num++;
}
num_num++;
//计算
if(ca[i]=='x')
result=front*back;
else if(ca[i]=='/')
result=front/back;
else if(ca[i]=='+')
result=front+back;
else if(ca[i]=='-')
result=front-back;
//判断结果位数
int num=0,result_num=result;
while(result_num>0)
{
result_num/=10;
num++;
}
//把结果写进string
int j=0,num_1=num;
for(int k=0;k<num_1;k++)
{
int tem=result;
if(num==3)
tem=tem/10/10;
else if(num==2)
tem=tem/10%10;
else if(num==1)
tem=tem%10;
num--;
ca[i-f_num+j]=(tem+'0');
j++;
}
//写完结果后把后面的字符依依向前移动
int k=1;
if(ca[i+b_num+k]=='\0')//如果计算完后没有符号
{
for(int z=i-f_num+num_1;z<i+b_num+k;z++)
ca[z]='\0';
i=0;
}
else
{//否则把后面的字符写到前面
while(ca[i+b_num+k])
{
ca[i-f_num+j]=ca[i+b_num+k];
ca[i+b_num+k]='\0';
k++;
j++;
}
ca[i-f_num+j]='\0';
i=0;
}
}
i++;
}
//cout<<ca<<endl;
i=0;
while(ca[i])
{
if(ca[i]=='+' || ca[i]=='-')
{
int f_num=0,b_num=0;//统计前面的数字离i有多远
int front=front_num(ca, i,&f_num),back=back_num(ca, i,&b_num),result=0,num_num=0;
int f=front,b=back;//num_num为两个数字加上符号的位数
while(f>0)
{
f/=10;
num_num++;
}
while(b>0)
{
b/=10;
num_num++;
}
num_num++;
if(ca[i-f_num-1]=='-')//如果第一个数为负数,前面有符号-
{
f_num++;
num_num++;
front=-front;
}
//计算
if(ca[i]=='x')
result=front*back;
else if(ca[i]=='/')
result=front/back;
else if(ca[i]=='+')
result=front+back;
else if(ca[i]=='-')
result=front-back;
//判断结果位数
int num=0,result_num=result;
if(result>=0)
{
while(result_num>0)
{
result_num/=10;
num++;
}
}
else if(result<0)
{
result_num=-result_num;
while(result_num>0)
{
result_num/=10;
num++;
}
num++;
}
//把结果写进string
int j=0,num_1=num;
if(result>=0)
{
for(int k=0;k<num_1;k++)
{
int tem=result;
if(num==3)
tem=tem/10/10;
else if(num==2)
tem=tem/10%10;
else if(num==1)
tem=tem%10;
num--;
ca[i-f_num+j]=(tem+'0');
j++;
}
}
else//结果为负数
{
ca[i-f_num+j]='-';
j++;
num_1--;
for(int k=0;k<num_1;k++)
{
int tem=result;
if(num==4)
tem=(-tem)/10/10;
else if(num==3)
tem=(-tem)/10%10;
else if(num==2)
tem=(-tem)%10;
num--;
ca[i-f_num+j]=(tem+'0');
j++;
}
num_1++;
}
//写完结果后把后面的字符依依向前移动
int k=1;
if(ca[i+b_num+k]=='\0')//如果计算完后没有符号
{
for(int z=i-f_num+num_1;z<i+b_num+k;z++)
ca[z]='\0';
}
else{//否则把后面的字符写到前面
while(ca[i+b_num+k])
{
ca[i-f_num+j]=ca[i+b_num+k];
ca[i+b_num+k]='\0';
k++;
j++;
}
}
i--;
}
i++;
//cout<<ca<<"\n";
}
//cout<<ca<<endl;
if(ca[0]=='2' && ca[1]=='4' &&ca[2]=='\0')//ca=="24" 我也不知道为什么
cout<<"Yes"<<endl;
else
cout<<"No"<<endl;
}
int main(int argc, const char * argv[]) {
// insert code here...
ios::sync_with_stdio(false);
int n;
cin>>n;
string ca[n];
for(int i=0;i<n;i++)
{
cin>>ca[i];
}
for(int i=0;i<n;i++)
{
calculate(ca[i]);
}
return 0;
}