/*
Name: NYOJ--2--括号配对问题
Author: shen_渊
Date: 18/04/17 21:15
Description: 先入栈个‘#’ 就好做了
*/
#include<bits/stdc++.h>
using namespace std;
bool cmp(char,char) ;
int main(){
int n;cin>>n;
while(n--){
string str;cin>>str;
stack<char> s;
while(!s.empty())s.pop();
s.push('#');//
for(int i=0; i<str.size(); ++i){
if(str[i]=='[' || str[i]=='(')
s.push(str[i]);
else if((str[i]==']' &&s.top()=='[') || (str[i]==')' && s.top()=='('))
s.pop();
else
s.push(str[i]);
}
if(s.top() != '#')cout<<"No"<<endl;
else cout<<"Yes"<<endl;
while(s.top() != '#')s.pop();
}
return 0;
}
bool cmp(char c,char cc){
if(c == '(' && cc == ')')return 1;
else if(c == '[' && cc == ']')return 1;
else return 0;
}
/*
仔细一想,于是……
*/
#include<bits/stdc++.h>
using namespace std;
bool cmp(char,char) ;
int main(){
int n;cin>>n;
while(n--){
string str;cin>>str;
int a = 0,b = -1,pos;
while(a != b){
a = str.size();
while((pos = str.find("()")) != string::npos)str.erase(pos,2);
while((pos = str.find("[]")) != string::npos)str.erase(pos,2);
b = str.size();
}
if(str == "")cout<<"Yes"<<endl;
else cout<<"No"<<endl;
}
return 0;
}