// #include <iostream>
// #include <stack>
// #include <string>
// using namespace std;
// int main() {
// string zifuchuan;
// cin >> zifuchuan;
// stack<char> zhan;
// bool pandun = true;
// for (int i = 0; zifuchuan[i] != '\0'; i++) {
// if (zifuchuan[i] == '(' || zifuchuan[i] == '[' || zifuchuan[i] == '{') {
// zhan.push(zifuchuan[i]);
// }
// if (zifuchuan[i] == ')') {
// if (zhan.empty()) {
// pandun = false;
// break;
// }
// if (zhan.top() != '(') {
// pandun = false;
// break;
// }
// if (zhan.top() == '('){
// zhan.pop();
// continue;
// }
// }
// if (zifuchuan[i] == ']') {
// if (zhan.empty()) {
// pandun = false;
// break;
// }
// if (zhan.top() != '[') {
// pandun = false;
// break;
// }
// if (zhan.top() == '['){
// zhan.pop();
// continue;
// }
// }
// if (zifuchuan[i] == '}') {
// if (zhan.empty()) {
// pandun = false;
// break;
// }
// if (zhan.top() != '{') {
// pandun = false;
// break;
// }
// if (zhan.top() == '{'){
// zhan.pop();
// continue;
// }
// }
// }
// if (pandun && zhan.empty()) {
// cout << "true" << endl;
// } else {
// cout << "false" << endl;
// }
// return 0;
// }
#include <iostream>
#include <stack>
#include <string>
using namespace std;
int main() {
string zifuchuan;
cin >> zifuchuan;
stack<char> zhan;
bool pandun = true;
for (int i = 0; i < zifuchuan.length(); i++) {
char c = zifuchuan[i];
if (c == '(' || c == '[' || c == '{') {
zhan.push(c);
} else if (c == ')' || c == ']' || c == '}') {
if (zhan.empty()) {
pandun = false;
break;
}
char top = zhan.top();
if ((c == ')' && top != '(') ||
(c == ']' && top != '[') ||
(c == '}' && top != '{')) {
pandun = false;
break;
}
zhan.pop();
}
}
// 关键修改:必须同时满足两个条件
if (pandun && zhan.empty()) {
cout << "true" << endl;
} else {
cout << "false" << endl;
}
return 0;
}
// // 64 位输出请用 printf("%lld")