/* package whatever; // don't place package name! */
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
{
static boolean solve(long number) {
for (long prime : primes) {
long x = number % prime; // x < prime < 10^9
long v = ((5 * x * x) + (2 * x) + (1)) % prime;
if (!isPerfectSquare(v, prime)) {
return false;
}
}
return true;
}
static boolean isPerfectSquare(long num, long prime) {
return pow(num, (prime - 1) / 2, prime) <= 1;
}
static long pow(long a, long b, long mod) {
long c = 1;
for (; b > 0; b /= 2) {
if (b % 2 == 1) {
c = (c * a) % mod;
}
a = (a * a) % mod;
}
return c;
}
static long[] primes = { 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47,
53, 59, 61, 67, 71, 73, 79, 83, 89, 97, 101, 103, 107,
109, 113, 127, 131, 137, 139, 149, 151, 157, 163, 167,
173, 179, 181, 191, 193, 197, 199, 211, 223, 227, 229,
233, 239, 241, 251, 257, 263, 269, 271, 277, 281, 283,
293, 307, 311, 313, 317, 331, 337, 347, 349, 353, 359};
{
System.
out.
println(solve
(1_576_239
)); }
}
LyogcGFja2FnZSB3aGF0ZXZlcjsgLy8gZG9uJ3QgcGxhY2UgcGFja2FnZSBuYW1lISAqLwoKaW1wb3J0IGphdmEudXRpbC4qOwppbXBvcnQgamF2YS5sYW5nLio7CmltcG9ydCBqYXZhLmlvLio7CgovKiBOYW1lIG9mIHRoZSBjbGFzcyBoYXMgdG8gYmUgIk1haW4iIG9ubHkgaWYgdGhlIGNsYXNzIGlzIHB1YmxpYy4gKi8KY2xhc3MgSWRlb25lCnsKCXN0YXRpYyBib29sZWFuIHNvbHZlKGxvbmcgbnVtYmVyKSB7CgkJZm9yIChsb25nIHByaW1lIDogcHJpbWVzKSB7CgkJCWxvbmcgeCA9IG51bWJlciAlIHByaW1lOyAvLyB4IDwgcHJpbWUgPCAxMF45CgkJCWxvbmcgdiA9ICgoNSAqIHggKiB4KSArICgyICogeCkgKyAoMSkpICUgcHJpbWU7CgkJCWlmICghaXNQZXJmZWN0U3F1YXJlKHYsIHByaW1lKSkgewoJCQkJcmV0dXJuIGZhbHNlOwoJCQl9CgkJfQoJCXJldHVybiB0cnVlOwoJfQoKCXN0YXRpYyBib29sZWFuIGlzUGVyZmVjdFNxdWFyZShsb25nIG51bSwgbG9uZyBwcmltZSkgewoJCXJldHVybiBwb3cobnVtLCAocHJpbWUgLSAxKSAvIDIsIHByaW1lKSA8PSAxOwoJfQoKCXN0YXRpYyBsb25nIHBvdyhsb25nIGEsIGxvbmcgYiwgbG9uZyBtb2QpIHsKCQlsb25nIGMgPSAxOwoJCWZvciAoOyBiID4gMDsgYiAvPSAyKSB7CgkJCWlmIChiICUgMiA9PSAxKSB7CgkJCQljID0gKGMgKiBhKSAlIG1vZDsKCQkJfQoJCQlhID0gKGEgKiBhKSAlIG1vZDsKCQl9CgkJcmV0dXJuIGM7Cgl9CgoJc3RhdGljIGxvbmdbXSBwcmltZXMgPSB7IDMsIDUsIDcsIDExLCAxMywgMTcsIDE5LCAyMywgMjksIDMxLCAzNywgNDEsIDQzLCA0NywKCQkJCQkJCTUzLCA1OSwgNjEsIDY3LCA3MSwgNzMsIDc5LCA4MywgODksIDk3LCAxMDEsIDEwMywgMTA3LAoJCQkJCQkJMTA5LCAxMTMsIDEyNywgMTMxLCAxMzcsIDEzOSwgMTQ5LCAxNTEsIDE1NywgMTYzLCAxNjcsCgkJCQkJCQkxNzMsIDE3OSwgMTgxLCAxOTEsIDE5MywgMTk3LCAxOTksIDIxMSwgMjIzLCAyMjcsIDIyOSwKCQkJCQkJCTIzMywgMjM5LCAyNDEsIDI1MSwgMjU3LCAyNjMsIDI2OSwgMjcxLCAyNzcsIDI4MSwgMjgzLAoJCQkJCQkJMjkzLCAzMDcsIDMxMSwgMzEzLCAzMTcsIDMzMSwgMzM3LCAzNDcsIDM0OSwgMzUzLCAzNTl9OwoJCQkKCXB1YmxpYyBzdGF0aWMgdm9pZCBtYWluIChTdHJpbmdbXSBhcmdzKSB0aHJvd3MgamF2YS5sYW5nLkV4Y2VwdGlvbgoJewoJCVN5c3RlbS5vdXQucHJpbnRsbihzb2x2ZSgxXzU3Nl8yMzkpKTsKCX0KfQ==