#include <bits/stdc++.h>
using namespace std;
bool otwierajacy(char x)
{
return (x=='(' || x=='[' || x=='{');
}
int main() {
stack<char> S;
char znak,gora;
string wyraz;
cin>>wyraz;
int len = wyraz.length();
bool flag=true;
for(int i=0;i<len;i++)
{
znak = wyraz[i];
if(otwierajacy(znak))
{
S.push(znak);
}else
{
if(S.empty())flag = false;
else{
gora = S.top();
S.pop();
if(gora == '{' && znak!='}') {cout<<"FALSE DLA"<<znak<<endl;flag = false;}
if(gora == '(' && znak!=')' ) {cout<<"FALSE DLA"<<znak<<endl;flag = false;}
if( (gora == '[' && znak!=']')) {cout<<"FALSE DLA"<<znak<<endl;flag = false;}
}
}
}
if(flag && S.empty()){cout<<"True";}else cout<<"False";
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CmJvb2wgb3R3aWVyYWphY3koY2hhciB4KQp7CglyZXR1cm4gKHg9PScoJyB8fCB4PT0nWycgfHwgeD09J3snKTsKfQppbnQgbWFpbigpIHsKCXN0YWNrPGNoYXI+IFM7CgljaGFyIHpuYWssZ29yYTsKCXN0cmluZyB3eXJhejsKCWNpbj4+d3lyYXo7CglpbnQgbGVuID0gd3lyYXoubGVuZ3RoKCk7Cglib29sIGZsYWc9dHJ1ZTsKCWZvcihpbnQgaT0wO2k8bGVuO2krKykKCXsKCQl6bmFrID0gd3lyYXpbaV07CgkJaWYob3R3aWVyYWphY3koem5haykpCgkJewoJCQlTLnB1c2goem5hayk7CgkJfWVsc2UKCQl7CgkJCWlmKFMuZW1wdHkoKSlmbGFnID0gZmFsc2U7CgkJCWVsc2V7CgkJCWdvcmEgPSBTLnRvcCgpOwoJCQlTLnBvcCgpOwoJCQlpZihnb3JhID09ICd7JyAmJiB6bmFrIT0nfScpIHtjb3V0PDwiRkFMU0UgRExBIjw8em5hazw8ZW5kbDtmbGFnID0gZmFsc2U7fQoJCQlpZihnb3JhID09ICcoJyAmJiB6bmFrIT0nKScgKSB7Y291dDw8IkZBTFNFIERMQSI8PHpuYWs8PGVuZGw7ZmxhZyA9IGZhbHNlO30KCQkJaWYoIChnb3JhID09ICdbJyAmJiB6bmFrIT0nXScpKSB7Y291dDw8IkZBTFNFIERMQSI8PHpuYWs8PGVuZGw7ZmxhZyA9IGZhbHNlO30KCQkJfQoJCQkKCQl9Cgl9CglpZihmbGFnICYmIFMuZW1wdHkoKSl7Y291dDw8IlRydWUiO31lbHNlIGNvdXQ8PCJGYWxzZSI7CglyZXR1cm4gMDsKfQ==