// #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")