#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"; }