import java.util.*;
class Main {
public static boolean isBalanced
(String str,
int i,
char expected
) { /* end has reached and not expecting anything then break */
if (i == str.length())
return expected == '\0';
char c = str.charAt(i);
/* expecting something and it is a closing type */
/* then it should match expecting type */
if (expected != '\0' && (c == '}' || c == ')' || c == ']'))
return (c == expected);
char e = expected;
/* is one of opening type, make expected to it corresponding closing type */
if (c == '{' || c == '[' || c == '(')
e = c == '{' ? '}' : (c == '[' ? ']' : ')');
/* call recursively with i + 1 */
return isBalanced(str, i + 1, e);
}
public static void main
(String args
[]) { Scanner sc
= new Scanner
(System.
in); while (sc.hasNextLine()) {
line = sc.nextLine();
System.
out.
println(isBalanced
(line,
0,
'\0')); }
}
}
aW1wb3J0IGphdmEudXRpbC4qOwoKY2xhc3MgTWFpbiB7CgpwdWJsaWMgc3RhdGljIGJvb2xlYW4gaXNCYWxhbmNlZChTdHJpbmcgc3RyLCBpbnQgaSwgY2hhciBleHBlY3RlZCkgewogICAgLyogZW5kIGhhcyByZWFjaGVkIGFuZCBub3QgZXhwZWN0aW5nIGFueXRoaW5nIHRoZW4gYnJlYWsgKi8KICAgIGlmIChpID09IHN0ci5sZW5ndGgoKSkKICAgICAgICByZXR1cm4gZXhwZWN0ZWQgPT0gJ1wwJzsKCiAgICBjaGFyIGMgPSBzdHIuY2hhckF0KGkpOwogICAgLyogZXhwZWN0aW5nIHNvbWV0aGluZyBhbmQgaXQgaXMgYSBjbG9zaW5nIHR5cGUgKi8KICAgIC8qIHRoZW4gaXQgc2hvdWxkIG1hdGNoIGV4cGVjdGluZyB0eXBlICovCiAgICBpZiAoZXhwZWN0ZWQgIT0gJ1wwJyAmJiAoYyA9PSAnfScgfHwgYyA9PSAnKScgfHwgYyA9PSAnXScpKQogICAgICAgIHJldHVybiAoYyA9PSBleHBlY3RlZCk7IAoKICAgIGNoYXIgZSA9IGV4cGVjdGVkOwoKICAgIC8qIGlzIG9uZSBvZiBvcGVuaW5nIHR5cGUsIG1ha2UgZXhwZWN0ZWQgdG8gaXQgY29ycmVzcG9uZGluZyBjbG9zaW5nIHR5cGUgKi8KICAgIGlmIChjID09ICd7JyB8fCBjID09ICdbJyB8fCBjID09ICcoJykKICAgICAgICBlID0gYyA9PSAneycgPyAnfScgOiAoYyA9PSAnWycgPyAnXScgOiAnKScpOwoKICAgIC8qIGNhbGwgcmVjdXJzaXZlbHkgd2l0aCBpICsgMSAqLyAKICAgIHJldHVybiBpc0JhbGFuY2VkKHN0ciwgaSArIDEsIGUpOwoKfQoKcHVibGljIHN0YXRpYyB2b2lkIG1haW4oU3RyaW5nIGFyZ3NbXSkgewogICAgU2Nhbm5lciBzYyA9IG5ldyBTY2FubmVyKFN5c3RlbS5pbik7CiAgICBTdHJpbmcgbGluZTsKICAgIHdoaWxlIChzYy5oYXNOZXh0TGluZSgpKSB7CiAgICAgICAgbGluZSA9IHNjLm5leHRMaW5lKCk7ClN5c3RlbS5vdXQucHJpbnRsbihpc0JhbGFuY2VkKGxpbmUsIDAsICdcMCcpKTsKfQp9Cn0=