#include<bits/stdc++.h>
using namespace std;
#define int long long
#define endl '\n'
#define quick ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);
const int inf=0x3f3f3f3f,maxn=2e5+5,mod=998244353;
inline int read(){
	int s=0,w=1;
	char ch=getchar();
	while(ch<'0'||ch>'9'){if(ch=='-')w=-1;ch=getchar();}
	while(ch>='0'&&ch<='9')s=s*10+ch-'0',ch=getchar();
	return s*w;
}
void solve(){
    string str;cin>>str;
    map<char,int>mp;
    mp['{']=4;mp['[']=3;mp['(']=2;mp['<']=1;
    mp['}']=-4;mp[']']=-3;mp[')']=-2;mp['>']=-1;
    int cnt=0;
    for(int i=0;i<str.size();i++){
        cnt+=mp[str[i]];
        if(cnt<0){
            cout<<"NO"<<endl;
            return;
        }
    }
    stack<char>stk;
    for(int i=0;i<str.size()-1;i++){
        if(mp[str[i]]>0){
            stk.push(str[i]);
        }
        if(mp[str[i]]<mp[str[i+1]]&&mp[stk.top()]+mp[str[i]]!=0){
            cout<<"NO"<<endl;
            return;
        }
        if(mp[stk.top()]+mp[str[i]]==0){
            stk.pop();
        }
    }
    cout<<"YES"<<endl;
}
signed main(){
	int t=1;
	cin>>t;
	while(t--){
		solve();
	}
	return 0;
}
/*
栈用来检查如(<>)合法但是(<)>不合法的方式
哈希表用来检测())这种情况和)(这种情况
每个括号加上权值更好分析
*/