# 100defsolve(expr:str)->dict:
d ={}defadd(k:str, v:int):if k notin d:
d[k]= v
else:
d[k]+= v
defdeal(formula:str, coef:int):
num =0
element =''
i =0while i <len(formula):if'A'<= formula[i]<='Z':if element !='':
add(element, coef *max(1, num))
element =''
num =0
element = formula[i]
i +=1elif'a'<= formula[i]<='z':
element = element + formula[i]
i +=1elif'0'<= formula[i]<='9':
num = num *10+int(formula[i])
i +=1elif formula[i]=='(':if element !='':
add(element, coef *max(1, num))
element =''
num =0
j = i
j +=1
matching =-1while matching !=0:if formula[j]=='(':
matching -=1if formula[j]==')':
matching +=1
j +=1
t = j
while t <len(formula)and'0'<= formula[t]<='9':
num = num *10+int(formula[t])
t +=1
deal(formula[i +1:j -1],max(1, num)* coef)
num =0
i = t
if element !='':
add(element, coef *max(1, num))for formula in expr.split('+'):
num =0
i =0while i <len(formula):ifnot'0'<= formula[i]<='9':
deal(formula[i:],max(num,1))breakelse:
num = num *10+int(formula[i])
i +=1return d
defmain():
n =int(input())for i inrange(n):
equation =input()
left, right = equation.split('=')[0], equation.split('=')[1]
d1, d2 = solve(left), solve(right)iflen(d1)!=len(d2):print('N')else:
flag =Truefor k, v in d1.items():if k notin d2 or d2[k]!= v:print('N')
flag =Falsebreakif flag:print('Y')if __name__ =='__main__':
main()