#include <bits/stdc++.h>
using namespace std;
using u64 = uint64_t;
using u128 = unsigned __int128;
static constexpr u64 bases[] =
{2ULL, 325ULL, 9375ULL, 28178ULL,450775ULL, 9780504ULL, 1795265022ULL};
static constexpr u64 small_primes[] =
{2ULL,3ULL,5ULL,7ULL,11ULL,13ULL,17ULL,19ULL,23ULL,29ULL,31ULL,37ULL};
// u64 mulmod(u64 a, u64 b, u64 mod){
// return (u128)a*b %mod;
// }
u64 modpow(u64 base, u64 expo, u64 mod){
u64 res = 1;
base %= mod;
while(expo){
if(expo&1) res = (u128)res*base %mod;
base = (u128)base*base %mod;
expo >>= 1;
}
return res;
}
bool isComposite(u64 a, u64 d, int s, u64 n){
u64 x = modpow(a, d, n);
if(x==1 || x==n-1) return false;
for(int r=1; r<s; r++){
x = (u128)x*x %n;
if(x==n-1) return false;
}
return true;
}
bool isPrime(u64 n){
if(n<2) return false;
for(u64 p : small_primes){
if(n==p) return true;
if(n%p==0) return false;
}
u64 d = n-1;
int s = __builtin_ctzll(d);
d >>= s;
for(u64 a : bases){
if(a%n==0) continue;
if(isComposite(a, d, s, n)) return false;
}
return true;
}
int main(){
// int t; cin >> t;
// while(t--){
// long long n; cin >> n;
cout << (isPrime(18446744073709551558) ? "YES\n" : "NO\n");
// }
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7Cgp1c2luZyB1NjQgID0gdWludDY0X3Q7CnVzaW5nIHUxMjggPSB1bnNpZ25lZCBfX2ludDEyODsKCnN0YXRpYyBjb25zdGV4cHIgdTY0IGJhc2VzW10gPSAKezJVTEwsIDMyNVVMTCwgOTM3NVVMTCwgMjgxNzhVTEwsNDUwNzc1VUxMLCA5NzgwNTA0VUxMLCAxNzk1MjY1MDIyVUxMfTsKCnN0YXRpYyBjb25zdGV4cHIgdTY0IHNtYWxsX3ByaW1lc1tdID0gCnsyVUxMLDNVTEwsNVVMTCw3VUxMLDExVUxMLDEzVUxMLDE3VUxMLDE5VUxMLDIzVUxMLDI5VUxMLDMxVUxMLDM3VUxMfTsKCi8vIHU2NCBtdWxtb2QodTY0IGEsIHU2NCBiLCB1NjQgbW9kKXsKLy8gICAgIHJldHVybiAodTEyOClhKmIgJW1vZDsgCi8vIH0KCnU2NCBtb2Rwb3codTY0IGJhc2UsIHU2NCBleHBvLCB1NjQgbW9kKXsKICAgIHU2NCByZXMgPSAxOwogICAgYmFzZSAlPSBtb2Q7CiAgICB3aGlsZShleHBvKXsKICAgICAgIGlmKGV4cG8mMSkgcmVzID0gKHUxMjgpcmVzKmJhc2UgJW1vZDsKICAgICAgIGJhc2UgPSAodTEyOCliYXNlKmJhc2UgJW1vZDsKICAgICAgIGV4cG8gPj49IDE7CiAgICB9CnJldHVybiByZXM7Cn0KCmJvb2wgaXNDb21wb3NpdGUodTY0IGEsIHU2NCBkLCBpbnQgcywgdTY0IG4pewogICAgCiAgICB1NjQgeCA9IG1vZHBvdyhhLCBkLCBuKTsKICAgIGlmKHg9PTEgfHwgeD09bi0xKSByZXR1cm4gZmFsc2U7CgogICAgZm9yKGludCByPTE7IHI8czsgcisrKXsKICAgICAgIHggPSAodTEyOCl4KnggJW47CiAgICAgICBpZih4PT1uLTEpIHJldHVybiBmYWxzZTsKICAgIH0KcmV0dXJuIHRydWU7Cn0KCmJvb2wgaXNQcmltZSh1NjQgbil7CiAgICAKICAgIGlmKG48MikgcmV0dXJuIGZhbHNlOwoKICAgIGZvcih1NjQgcCA6IHNtYWxsX3ByaW1lcyl7CiAgICAgICBpZihuPT1wKSByZXR1cm4gdHJ1ZTsKICAgICAgIGlmKG4lcD09MCkgcmV0dXJuIGZhbHNlOwogICAgfQogICAgCiAgICB1NjQgZCA9IG4tMTsKICAgIGludCBzID0gX19idWlsdGluX2N0emxsKGQpOwogICAgZCA+Pj0gczsKCiAgICBmb3IodTY0IGEgOiBiYXNlcyl7CiAgICAgICBpZihhJW49PTApIGNvbnRpbnVlOwogICAgICAgaWYoaXNDb21wb3NpdGUoYSwgZCwgcywgbikpIHJldHVybiBmYWxzZTsKICAgIH0KcmV0dXJuIHRydWU7Cn0KCmludCBtYWluKCl7CiAgICAKICAgIC8vIGludCB0OyBjaW4gPj4gdDsKICAgIAogICAgLy8gd2hpbGUodC0tKXsKICAgIC8vIGxvbmcgbG9uZyBuOyBjaW4gPj4gbjsKICAgIGNvdXQgPDwgKGlzUHJpbWUoMTg0NDY3NDQwNzM3MDk1NTE1NTgpID8gIllFU1xuIiA6ICJOT1xuIik7CiAgICAvLyB9CiAgICAKcmV0dXJuIDA7ICAgIAp9Cg==