#include <iostream>
#include <vector>
#include <queue>
#include <stack>
#include <algorithm>
using namespace std;
stack<char> s;
string str;
string str2;
// 这个忘了写!!
void clearStack() {
while (s.size() > 0) {
s.pop();
}
}
bool check() {
for (int i = 0; i <= str.size() - 1; i ++) {
if (str[i] == '(' || str[i] == '[' || str[i] == '{' ) {
// 压入
s.push(str[i]);
} else if (str[i] == ')' ) {
if (s.empty() || s.top() != '(') {
return false;
} else if (s.top() == '(') {
s.pop();
}
} else if (str[i] == ']') {
if (s.empty() || s.top() != '[') {
return false;
} else if (s.top() == '[') {
s.pop();
}
} else if (str[i] == '}') {
if (s.empty() || s.top() != '{') {
return false;
} else if (s.top() == '{') {
s.pop();
}
}
}
return true;
}
int main() {
// ()(){{{[[]]}}
while(cin >> str) {
clearStack();
int res = check();
cout << res << endl;
}
return 0;
}