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