#include <iostream>
#include <stack>
#include <string>
#include <vector>
using namespace std;

bool is_value(const vector<char>& v) {
    stack<char> s;
    for (const auto& c : v) {
        if (c == '(' || c == '[') {
            s.push(c);
        } else {
            if (s.empty()) {
                return false;
            }
            char top = s.top();
            s.pop();
            if ((c == ')' && top != '(') || (c == ']' && top != '[')) {
                return false;
            }
        }
    }
    return s.empty();
}

bool check(const string& s) {
    vector<char> v;
    for (const auto& c : s) {
        if (c == '(' || c == ')' || c == '[' || c == ']') {
            v.push_back(c);
        }
    }
    return is_value(v);
}

int main() {
    string s;
    cin >> s;

    cout << (check(s) ? "true" : "false") << endl;
    return 0;
}