#include<bits/stdc++.h>
#include<unordered_map>
using namespace std;
int main(){
    int T;
    cin>>T;
    while(T--){
        unordered_map<char,int>mp;
        mp['{']=1;mp['[']=2;mp['(']=3;mp['<']=4;
        mp['}']=-1;mp[']']=-2;mp[')']=-3;mp['>']=-4;
        stack<char>st;
        string s;
        cin>>s;
        int len = s.length(),tmpmax = 0;
        bool res = true;
        for(int i=0;i<len;i++){
            if(mp[s[i]]<0)tmpmax = 0;
            else if(!st.empty()&&mp[st.top()]>mp[s[i]]){
                res = false;
                break;
            }
            else tmpmax = max(tmpmax,mp[s[i]]);
            if(mp[s[i]]>0)st.push(s[i]);
            else if(mp[s[i]]<0&&!st.empty()&&mp[st.top()]+mp[s[i]]==0)st.pop();
            else {
                res = false;
                break;
            }
        }
        if(res&&st.empty())cout<<"YES"<<endl;
        else cout<<"NO"<<endl;
    }
    return 0;
}