#include <iostream>
#include<stack>
using namespace std;
stack<char>a,b,c;
int main() {
    string s;
    cin >> s;int l=s.length();string ss[l+2];int d=0;
    for (int i=0;i<=l-1;++i){
        if (s[i]!='['&&s[i]!=']'&&s[i]!='('&&s[i]!=')'){
            continue;
        }
        else{
            a.push(s[i]);ss[++d]=s[i];
        }
    }
    int n=a.size();
    for (int i=1;i<=d-1;++i){
        if (ss[i][0]=='['){
            if (ss[i+1][0]==')'){
                cout<<"false";return 0;
            }
        }
        else if (ss[i][0]=='('){
            if (ss[i][0]==']'){
                cout<<"false";return 0;
            }
        }
    }
    for (int i=0;i<=n-1;++i){
        if (a.top()=='['||a.top()==']'){
            b.push(a.top());a.pop();
        }
        else if (a.top()=='('||a.top()==')'){
            c.push(a.top());a.pop();
        }
    }
    int n1=b.size(),n2=c.size();
    bool pd=true;
    if (n1%2==1||n2%2==1){
        cout<<"false";return 0;
    }
    while (b.size()!=0){
        if (b.top()!='['){
            pd=false;cout<<"false";return 0;
        }else{
            b.pop();
            if (b.top()!=']'){
                pd=false;cout<<"false";return 0;
            }
            b.pop();
        }
    }
    while (c.size()!=0){
        if (c.top()!='('){
            pd=false;cout<<"false";return 0;
        }else{
            c.pop();
            if (c.top()!=')'){
                pd=false;cout<<"false";return 0;
            }
            c.pop();
        }
    }
    cout<<"true";
}