栈
LIFO: last in first out
#include <stack>
stack<char> ss;
ss.push();
ss.pop();
ss.top();
ss.empty();
#include <iostream>
#include <stack>
#include <cstring>
using namespace std;
int n, flag = 1;
char s[100];
stack<char> ss;
int main() {
cin >> n;
while (n--) {
cin >> s;
for (int i = 0; i < strlen(s); i++) {
if (s[i] == '{' || s[i] == '[' || s[i] == '(')
ss.push(s[i]);
else if (ss.empty()) {
flag = 0;
break;
} else {
switch (s[i]) {
case '}' :
if (ss.top() == '{') ss.pop();
break;
case ']' :
if (ss.top() == '[') ss.pop();
break;
case ')' :
if (ss.top() == '(') ss.pop();
break;
}
}
}
if (!ss.empty()) flag = 0;
while (!ss.empty()) ss.pop();
if (flag) cout << "Yes" << endl;
else cout << "No" << endl;
}
return 0;
}