#include #include using namespace std; string be; char getZaro(char a){ if(a == '|') return a; if(a == '(') return a+1; if(a == '{' || a == '[') return a+2; return 'e'; } bool isValid(int bal, int jobb){ if(bal > jobb) return true; if((jobb-bal) % 2 == 0) return false; bool ok = true; char kezdo = be[bal]; int cv = bal + 1, gpos = bal; char veg = getZaro(kezdo); int szaml = 0; ok = false; while(cv <= jobb){ if(be[cv] == veg){ szaml++; if(szaml == 1 || kezdo == '|'){ ok = isValid(bal+1, cv-1); if(ok){ gpos = cv; cv = jobb; }else if(kezdo != '|'){ return false; } } }else if(be[cv] == kezdo) szaml--; ++cv; } if(!ok) return false; if(szaml % 2 == 0) return false; if(gpos == bal) return false; if(!isValid(gpos + 1, jobb)) return false; return true; } int main(){ int n; cin >> n; for(int i = 0; i < n; ++i){ cin >> be; if(isValid(0, be.length()-1)) cout << "YES" << endl; else cout << "NO" << endl; } return 0; }