#include<iostream>
#include<string>
using namespace std;
bool judge(char c[])
{
char st[20];
int top = 0; //建栈
int len = strlen(c);
bool flag = true; //标志位
for (int i = 0; i < len; i++)
{
switch (c[i])
{
case '(':
case '[':
case '{':
st[top++] = c[i]; //入栈
break;
case ')':
if (st[--top] != '(')//退栈且检查
flag = false;
break;
case ']':
if (st[--top] != '[')
flag = false;
break;
case '}':
if (st[--top] != '{')
flag = false;
break;
}
}
if (top == 0 && flag == true) //检查结束后,若栈空则匹配成功,若其中还有未匹配的括号,则不成功;
return true;
else
return false;
}
int main()
{
int n;
cin >> n;
if (n <= 0)
return 0;
char c[20][20];
for (int i = 0; i < n; i++)
{
cin.sync();
//cin.clear();
cin.getline(c[i], 20);
}
for (int i = 0; i < n;i++)
{
if (judge(c[i]))
cout << "Yes" << endl;
else
cout << "No" << endl;
}
return 0;
}