#include #include #include #include using namespace std; typedef long long ll; typedef vector vi; static vi p(0); static vi primes(0); static vi a(0); static vi numbers(0); static vi value(0); static void findPrimes(ll x) { ll t=1; while(t*t vec(min(ll(1000000),t)); primes.push_back(2); for(ll i=3;i<=vec.size();i+=2) { if(vec[i]) continue; primes.push_back(i); for(ll j=i*i;j<=vec.size();j+=2*i) vec[j]=true; } } static void setP(ll x) { for(int i=0;i0)&&p[i]==p[i-1]) continue; temp.push_back(p[i]); } p=temp; } static void setNumbers() { set s; for(int i=0;i0) { ll t=*s.begin(); s.erase(t); if(t==-1) continue; numbers.push_back(-t); for(int i=0;i1) { int t=(left+right)/2; if(numbers[t]==x) return t; if(numbers[t]> n; a.resize(n); ll MAXI=0; for(int i=0;i> a[i]; MAXI=max(MAXI,a[i]); } findPrimes(MAXI); for(int i=0;ia[j])) j++; while((j