#include <iostream> #include <cstring> #include <map> #include <algorithm> using namespace std; string equa; int match(int i) { int c = 0; while(i < equa.size()) { if(equa[i] == '(') c ++; else if(equa[i] == ')') c --; if(c == 0) return i; i ++; } } void term(map<string,int> &mp,int coef,int l,int r) // Cl23 { int pos = r; while(pos >= l && isdigit(equa[pos])) pos --; int coef1 = 0; for(int k = pos + 1; k <= r; ++k) coef1 = coef1 * 10 + equa[k] - '0'; if(!coef1) coef1 ++; //l - pos; mp[equa.substr(l, pos - l + 1)] += coef * coef1; } void word(map<string,int> &mp,int coef,int l,int r) // NaCl2(Au(CN)2)5 * coef { for(int i = l; i <= r;) { if(equa[i] == '(') { int q = match(i); int j = q + 1; int coef1 = 1; word(mp,coef * coef1,i + 1, q - 1); i = j; } else { int q = i + 1; while(q <= r && isdigit(equa[q]) || islower(equa[q])) q ++; // Nl123 term(mp,coef,i,q - 1); i = q; } } } void word_k(map<string,int> &mp,int l,int r) // 4Na(Au(CN)2)5 { int coef = 0; while(isdigit(equa[l])) coef = coef * 10 + equa[l ++] - '0'; if(!coef) coef ++; word(mp,coef,l,r); } map<string,int> words(int l,int r) // ... + .... { map<string,int> mp; int pre = l; for(int i = l; i <= r; ++i) { if(equa[i] == '+') { word_k(mp,pre, i - 1); pre = i + 1; } } word_k(mp,pre,r); return mp; } int main() { int T; cin >> T; while(T --) { cin >> equa; int e = find(equa.begin(),equa.end(),'=') - equa.begin(); int ans = words(0,e - 1) == words(e + 1,equa.size() - 1); if(ans) puts("Y"); else puts("N"); } return 0; }