/* package whatever; // don't place package name! */
import java.util.*;
import java.lang.*;
import java.io.*;
import java.util.stream.Collectors;
/* Name of the class has to be "Main" only if the class is public. */
class Ideone
{
{
,"ABCDEFGHIJKLMNOPQRSTUVWXYZ"};
int shift = -3;
.map(i -> mapChar(i, shift))
.collect( StringBuilder::new
, StringBuilder::appendCodePoint
, StringBuilder::append)
.toString();
System.
out.
println(str
+ " -> " + out
); }
}
public static int mapChar(int c, int shift) {
final int alpha_len = 'z' - 'a' + 1;
shift = shift % alpha_len + alpha_len * (shift < 0 ? 1 : 0);
if ('a' <= c && c <= 'z') return (c + shift - 'a') % alpha_len + 'a';
if ('A' <= c && c <= 'Z') return (c + shift - 'A') % alpha_len + 'A';
return c;
}
}
LyogcGFja2FnZSB3aGF0ZXZlcjsgLy8gZG9uJ3QgcGxhY2UgcGFja2FnZSBuYW1lISAqLwoKaW1wb3J0IGphdmEudXRpbC4qOwppbXBvcnQgamF2YS5sYW5nLio7CmltcG9ydCBqYXZhLmlvLio7CmltcG9ydCBqYXZhLnV0aWwuc3RyZWFtLkNvbGxlY3RvcnM7CgovKiBOYW1lIG9mIHRoZSBjbGFzcyBoYXMgdG8gYmUgIk1haW4iIG9ubHkgaWYgdGhlIGNsYXNzIGlzIHB1YmxpYy4gKi8KY2xhc3MgSWRlb25lCnsKCXB1YmxpYyBzdGF0aWMgdm9pZCBtYWluIChTdHJpbmdbXSBhcmdzKSB0aHJvd3MgamF2YS5sYW5nLkV4Y2VwdGlvbgoJewoJCVN0cmluZ1tdIHRlc3RzID0gbmV3IFN0cmluZ1tdeyAiYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXoiCgkJCQkJCQkJCSwiQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVoifTsKCQlpbnQgc2hpZnQgPSAtMzsKCQlmb3IgKFN0cmluZyBzdHI6IHRlc3RzKSB7CgkJCVN0cmluZyBvdXQgPSBzdHIuY2hhcnMoKQoJCQkJCQkubWFwKGkgLT4gbWFwQ2hhcihpLCBzaGlmdCkpCgkJCQkJCS5jb2xsZWN0KCBTdHJpbmdCdWlsZGVyOjpuZXcKCQkJCQkJCQksIFN0cmluZ0J1aWxkZXI6OmFwcGVuZENvZGVQb2ludAoJCQkJCQkJCSwgU3RyaW5nQnVpbGRlcjo6YXBwZW5kKQoJCQkJCQkudG9TdHJpbmcoKTsKCQkJU3lzdGVtLm91dC5wcmludGxuKHN0ciArICIgLT4gIiArIG91dCk7CgkJfQoJfQoJCglwdWJsaWMgc3RhdGljIGludCBtYXBDaGFyKGludCBjLCBpbnQgc2hpZnQpIHsKCQlmaW5hbCBpbnQgYWxwaGFfbGVuID0gJ3onIC0gJ2EnICsgMTsKCQlzaGlmdCA9IHNoaWZ0ICUgYWxwaGFfbGVuICsgYWxwaGFfbGVuICogKHNoaWZ0IDwgMCA/IDEgOiAwKTsKCQlpZiAoJ2EnIDw9IGMgJiYgYyA8PSAneicpIHJldHVybiAoYyArIHNoaWZ0IC0gJ2EnKSAlIGFscGhhX2xlbiArICdhJzsKCQlpZiAoJ0EnIDw9IGMgJiYgYyA8PSAnWicpIHJldHVybiAoYyArIHNoaWZ0IC0gJ0EnKSAlIGFscGhhX2xlbiArICdBJzsKCQlyZXR1cm4gYzsKCX0KfQ==