#include<bits/stdc++.h>
#include<stack>
using namespace std;

string s;
bool judge(string s)
{
    stack<char> arr;
    for(int i=1;i<=s.size();i++)
    {
        if(s[i-1]=='('||s[i-1]=='[')
        {
            arr.push(s[i-1]);

        }
        if(s[i-1]==')')
        {
            if(arr.empty()||arr.top()!='(')  return false;
            if(arr.top()=='(') arr.pop();
        }
        if(s[i-1]==']')
        {
            if(arr.empty()||arr.top()!='[') return false;
            if(arr.top()=='[') arr.pop();
            
        }
    }
    if(arr.empty()) return true;
    else return false;
}
int main() {
    //stack<char> arr;
    //string s;
    cin>>s;
    if(judge(s)) cout<<"true"<<endl;
    else cout<<"false"<<endl;
    
    return 0;
}
// 64 位输出请用 printf("%lld")

先访问栈里面是否为空,再取arr.top()才可以找到;否则如果栈内为空会导致运行超载。