#include using namespace std; typedef unsigned long long ull; typedef long long ll; typedef vector vi; typedef vector vll; typedef vector vull; #define pb push_back #define mp make_pair #define X first #define Y second #define rep(i,n) for(int i=0;i<(n);i++) #define Rep(i,a,b) for(int i=(a);i<(b);i++) #define repr(i,n) for(int i=(n-1);i>=0;i--) #define wh(t) while(t--) #define all(x) (x).begin(),(x).end() #define sz(a) a.size() #define MOD 1000000007 #define PI 3.14159265358979 #define endl '\n' inline int sd() { register char c=getchar_unlocked(); int n=0; while(c<'0'||c>'9') c=getchar_unlocked(); for(;c>='0'&&c<='9';c=getchar_unlocked()) n=(n<<1)+(n<<3)+(c-'0'); return n; } inline void pd(ull n) { char c[20]; int i=0; do { c[i++]=n%10+'0'; n/=10; }while(n!=0); i--; while(i>=0) putchar_unlocked(c[i--]); putchar_unlocked('\n'); } #define max 100002 bool primes[max]; int dp[max]; void sieve() { memset(primes,true,sizeof(primes)); primes[0]=primes[1]=false; Rep(i,2,sqrt(max)) { if(primes[i]) { for(int j=i;j*i