#include using namespace std; #define display(a) {for(int i=0;i #include using namespace __gnu_pbds; typedef tree, rb_tree_tag, tree_order_statistics_node_update> ordered_set; #ifndef ONLINE_JUDGE #define debug(x) cerr << #x <<" "; _print(x); cerr << endl; #else #define debug(x) #endif void _print(ll t) {cerr << t;} void _print(int t) {cerr << t;} void _print(string t) {cerr << t;} void _print(char t) {cerr << t;} void _print(double t) {cerr << t;} template void _print(pair p); template void _print(vector v); template void _print(set v); template void _print(map v); template void _print(multiset v); template void _print(queue q); template void _print(stack stk); template void _print(priority_queue pq); template void _print(priority_queue, greater> pq); template void _print(deque dq); const int N=1e6+10; vector isprime(N,1); vector primes; void seive(){ isprime[0]=isprime[1]=0; for(int i=2;i*i>n; int c=0; for(auto i : primes){ if(n%i) continue; c++; while(n%i==0){ n/=i; } } if(n>1) c++; if(c<=2){ cout<<"YES\n"; }else cout<<"NO\n"; } int main(){ seive(); fast_io;int t=1; // cin>>t; while(t--){ solve(); } } template void _print(pair p) {cerr << "{"; _print(p.ff); cerr << ","; _print(p.ss); cerr << "}";} template void _print(vector v) {cerr << "[ "; for (T i : v) {_print(i); cerr << " ";} cerr << "]";} template void _print(set v) {cerr << "[ "; for (T i : v) {_print(i); cerr << " ";} cerr << "]";} template void _print(multiset v) {cerr << "[ "; for (T i : v) {_print(i); cerr << " ";} cerr << "]";} template void _print(map v) {cerr << "[ "; for (auto i : v) {_print(i); cerr << " ";} cerr << "]";} template void _print(queue q){cerr << "[";while (!q.empty()){T i = q.front();q.pop();cerr << i;cerr << " ";}cerr << "]";} template void _print(stack st){cerr << "[";while (!st.empty()){_print(st.top());st.pop();cerr << " ";}cerr << "]";} template void _print(priority_queue pq){cerr << "[";while (!pq.empty()){_print(pq.top());pq.pop();cerr << " ";}cerr << "]";} template void _print(priority_queue, greater> pq){cerr << "[";while (!pq.empty()){_print(pq.top());pq.pop();cerr << " ";}cerr << "]";} template void _print(deque dq){cerr << "[";for (T i : dq){_print(i);cerr << " ";}cerr << "]";}