#include #include #include #include #include #include #include #include #include using namespace std; char opposite(char bracket) { if(bracket == '(') return ')'; if(bracket == '[') return ']'; if(bracket == '<') return '>'; if(bracket == '{') return '}'; if(bracket == ')') return '('; if(bracket == ']') return '['; if(bracket == '>') return '<'; if(bracket == '}') return '{'; } bool leftBracket(char bracket) { if(bracket == '(' || bracket == '[' || bracket == '<' || bracket == '{') return true; return false; } char rightBracket(char bracket) { char o = opposite(bracket); return leftBracket(o); } int main() { freopen ("brackets.in", "r", stdin); string s; cin >> s; stack st; bool good = true; for(int i = 0; i < s.size(); i++) { char b = s[i]; if(leftBracket(b)) st.push(b); else if(rightBracket(b)) { if(st.empty()) { good = false; break; } else if(st.top() != opposite(b)) { good = false; break; } else st.pop(); } } if(!st.empty()) good = false; freopen ("brackets.out", "w", stdout); cout << good; return 0; }