import java.util.*;
import java.lang.*;
import java.io.*;
/* Name of the class has to be "Main" only if the class is public. */
class Ideone
{
private int getLongestParenthesisLength
(String str
) { Stack<Integer> stack = new Stack<Integer>();
int n = str.length();
int length = 0;
int lastMatchedIndex = -1;
for (int i = 0; i < n; i++) {
char ch = str.charAt(i);
switch (ch) {
case '(':
stack.push(i);
break;
case ')':
if (stack.isEmpty()) {
lastMatchedIndex = i;
} else {
stack.pop();
if (stack.isEmpty()) {
length
= Math.
max(length, i
- lastMatchedIndex
); } else {
length
= Math.
max(length, i
- stack.
peek()); }
}
break;
}
}
return length;
}
{
Ideone longestParenthesis = new Ideone();
Scanner sc
= new Scanner
(System.
in); int len = longestParenthesis.getLongestParenthesisLength(str);
}
}
aW1wb3J0IGphdmEudXRpbC4qOwppbXBvcnQgamF2YS5sYW5nLio7CmltcG9ydCBqYXZhLmlvLio7CiAKLyogTmFtZSBvZiB0aGUgY2xhc3MgaGFzIHRvIGJlICJNYWluIiBvbmx5IGlmIHRoZSBjbGFzcyBpcyBwdWJsaWMuICovCmNsYXNzIElkZW9uZQp7CgkgICAgcHJpdmF0ZSBpbnQgZ2V0TG9uZ2VzdFBhcmVudGhlc2lzTGVuZ3RoKFN0cmluZyBzdHIpIHsKICAgICAgICBTdGFjazxJbnRlZ2VyPiBzdGFjayA9IG5ldyBTdGFjazxJbnRlZ2VyPigpOwogICAgICAgIGludCBuID0gc3RyLmxlbmd0aCgpOwogICAgICAgIGludCBsZW5ndGggPSAwOwogICAgICAgIGludCBsYXN0TWF0Y2hlZEluZGV4ID0gLTE7CiAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBuOyBpKyspIHsKICAgICAgICAgICAgY2hhciBjaCA9IHN0ci5jaGFyQXQoaSk7CiAgICAgICAgICAgIHN3aXRjaCAoY2gpIHsKICAgICAgICAgICAgICAgIGNhc2UgJygnOgogICAgICAgICAgICAgICAgICAgIHN0YWNrLnB1c2goaSk7CiAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICBjYXNlICcpJzoKICAgICAgICAgICAgICAgICAgICBpZiAoc3RhY2suaXNFbXB0eSgpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGxhc3RNYXRjaGVkSW5kZXggPSBpOwogICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHN0YWNrLnBvcCgpOwogICAgICAgICAgICAgICAgICAgICAgICBpZiAoc3RhY2suaXNFbXB0eSgpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZW5ndGggPSBNYXRoLm1heChsZW5ndGgsIGkgLSBsYXN0TWF0Y2hlZEluZGV4KTsKICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxlbmd0aCA9IE1hdGgubWF4KGxlbmd0aCwgaSAtIHN0YWNrLnBlZWsoKSk7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgcmV0dXJuIGxlbmd0aDsKICAgIH0KCXB1YmxpYyBzdGF0aWMgdm9pZCBtYWluIChTdHJpbmdbXSBhcmdzKSB0aHJvd3MgamF2YS5sYW5nLkV4Y2VwdGlvbgoJewoJCUlkZW9uZSBsb25nZXN0UGFyZW50aGVzaXMgPSBuZXcgSWRlb25lKCk7CiAgICAgICAgU2Nhbm5lciBzYyA9IG5ldyBTY2FubmVyKFN5c3RlbS5pbik7CiAgICAgICAgU3RyaW5nIHN0ciA9IHNjLm5leHQoKTsKICAgICAgICBpbnQgbGVuID0gbG9uZ2VzdFBhcmVudGhlc2lzLmdldExvbmdlc3RQYXJlbnRoZXNpc0xlbmd0aChzdHIpOwogICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbihsZW4pOwoJfQp9