using namespace std; #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #define S(x) scanf("%d",&x) #define S2(x,y) scanf("%d%d",&x,&y) #define wl(n) while(n--) #define ll long long #define bitcnt(x) __builtin_popcount(x) #define P(x) printf("%d\n",x) #define PB push_back #define MP make_pair #define fl(i,n) for(i=0;i=a;i--) #define mem(a,i) memset(a,i,sizeof(a)) #define F first #define S1 second typedef pair P; vector v1; pair p1; #define MOD 1000000007 #define debug(x) printf("####%d####\n",x); #define nl printf("\n"); #define str string int a[1234567]; string s; int dp[1001]; ll pow1(ll x,ll y) { if(y==0) return 1; ll temp= pow1(x,y/2)%MOD; if(y%2==0) return (temp*temp)%MOD; else return (((temp*temp)%MOD)*x)%MOD; } int prime[123456]; void sieve() { prime[0]=1; prime[1]=1; int i,j; for(i=2;i*i<=100009;i++) { if(!prime[i]) { for(j=i*i;j<=100009;j+=i) prime[j]=1; } } j=0; for(i=0;i<100009;i++) { if(!prime[i]) { prime[j]=i; j++; } } //cout<