import java.util.function.*;
class Ideone {
static Predicate<String> isPalindrome =
s->s.matches("|(?:(.)(?<=(?=^.*?(\\1\\2?)$).*))+(?<=(?=^\\2$).*)")//)")*.)$2\\^=?(=<?(+))*.)$)?2\\1\\(?*.^=?(=<?().(:?(|"(sehctam.s>-s
;
testPalindrome("", true);
testPalindrome("x", true);
testPalindrome("xx", true);
testPalindrome("xy", false);
testPalindrome("xyx", true);
testPalindrome("xxx", true);
testPalindrome("xxyx", false);
testPalindrome("racecar", true);
testPalindrome("step on no pets", true);
testPalindrome("aManaPlanaCanalPanaMa", true);
testPalindrome("this is impossible", false);
}
static void testPalindrome
(String s,
boolean expected
) { if (isPalindrome.test(s) == expected) {
} else {
System.
out.
printf("NOK: str=\"%s\", expected=%b%n", s, expected
); }
}
}
aW1wb3J0IGphdmEudXRpbC5mdW5jdGlvbi4qOwoKY2xhc3MgSWRlb25lIHsKCXN0YXRpYyBQcmVkaWNhdGU8U3RyaW5nPiBpc1BhbGluZHJvbWUgPSAKCSAgcy0+cy5tYXRjaGVzKCJ8KD86KC4pKD88PSg/PV4uKj8oXFwxXFwyPykkKS4qKSkrKD88PSg/PV5cXDIkKS4qKSIpLy8pIikqLikkMlxcXj0/KD08PygrKSkqLikkKT8yXFwxXFwoPyouXj0/KD08PygpLig6Pyh8IihzZWhjdGFtLnM+LXMKCSAgOwoJCglwdWJsaWMgc3RhdGljIHZvaWQgbWFpbiAoU3RyaW5nW10gYXJncykgdGhyb3dzIGphdmEubGFuZy5FeGNlcHRpb24gewoJCXRlc3RQYWxpbmRyb21lKCIiLCB0cnVlKTsKCQl0ZXN0UGFsaW5kcm9tZSgieCIsIHRydWUpOwoJCXRlc3RQYWxpbmRyb21lKCJ4eCIsIHRydWUpOwoJCXRlc3RQYWxpbmRyb21lKCJ4eSIsIGZhbHNlKTsKCQl0ZXN0UGFsaW5kcm9tZSgieHl4IiwgdHJ1ZSk7CgkJdGVzdFBhbGluZHJvbWUoInh4eCIsIHRydWUpOwoJCXRlc3RQYWxpbmRyb21lKCJ4eHl4IiwgZmFsc2UpOwoJCXRlc3RQYWxpbmRyb21lKCJyYWNlY2FyIiwgdHJ1ZSk7CgkJdGVzdFBhbGluZHJvbWUoInN0ZXAgb24gbm8gcGV0cyIsIHRydWUpOwoJCXRlc3RQYWxpbmRyb21lKCJhTWFuYVBsYW5hQ2FuYWxQYW5hTWEiLCB0cnVlKTsKCQl0ZXN0UGFsaW5kcm9tZSgidGhpcyBpcyBpbXBvc3NpYmxlIiwgZmFsc2UpOwoJfQoJCglzdGF0aWMgdm9pZCB0ZXN0UGFsaW5kcm9tZShTdHJpbmcgcywgYm9vbGVhbiBleHBlY3RlZCkgewoJCWlmIChpc1BhbGluZHJvbWUudGVzdChzKSA9PSBleHBlY3RlZCkgewoJCQlTeXN0ZW0ub3V0LnByaW50bG4oIk9LIik7CgkJfSBlbHNlIHsKCQkJU3lzdGVtLm91dC5wcmludGYoIk5PSzogc3RyPVwiJXNcIiwgZXhwZWN0ZWQ9JWIlbiIsIHMsIGV4cGVjdGVkKTsKCQl9Cgl9Cn0=