/*input 1 JDCJPGROIE YFGWDIYAFVMMA 23 32 4 0 34 26 11 18 27 14 28 21 22 13 16 14 15 17 25 28 25 24 31 26 39 28 25 25 32 17 0 18 24 23 21 20 22 24 23 29 11 20 18 13 24 21 21 27 23 27 11 10 13 24 16 25 30 0 15 38 33 22 26 24 11 34 24 13 21 23 29 16 38 28 21 27 32 34 24 33 37 26 27 22 0 38 37 28 17 25 11 29 37 20 26 30 25 31 34 13 26 26 30 20 16 25 25 28 26 22 29 0 34 33 32 28 19 16 27 24 22 34 28 13 15 12 25 31 29 27 16 18 24 23 22 21 18 22 0 21 25 16 16 26 33 10 26 20 29 22 22 26 26 11 29 20 25 23 29 24 25 23 24 26 32 0 20 22 23 22 24 11 31 21 11 14 23 28 17 29 25 21 11 11 19 27 16 24 30 29 24 23 0 13 13 12 23 22 12 29 31 31 22 22 13 25 20 26 25 34 32 14 24 22 25 26 18 28 22 0 30 10 21 28 29 31 30 18 20 22 10 29 21 20 28 39 29 15 19 11 26 27 37 29 26 29 0 28 30 24 30 28 18 27 30 18 28 36 30 27 18 29 26 23 21 25 18 38 25 27 34 12 21 0 11 22 24 32 24 23 26 24 22 36 32 30 33 33 21 12 36 30 17 30 14 26 31 13 26 23 0 24 23 29 13 30 16 30 23 25 34 19 26 22 27 13 22 15 24 26 21 20 15 11 26 21 29 0 20 10 31 29 31 19 21 21 32 21 25 31 27 27 34 29 23 34 12 11 28 25 28 32 34 14 0 24 19 25 24 33 23 13 28 22 13 22 23 26 33 26 21 16 11 10 23 27 27 32 24 21 29 0 21 19 27 26 25 22 29 11 15 21 29 16 26 31 14 25 29 26 28 11 22 21 24 30 23 33 0 27 12 27 21 26 32 16 28 11 27 24 28 26 23 37 32 31 26 22 34 32 21 11 31 21 22 0 34 14 20 28 25 32 10 31 26 25 23 21 29 33 36 39 20 33 10 32 34 23 32 33 28 27 0 28 26 16 31 33 16 24 36 31 14 30 34 37 24 30 22 17 23 23 25 27 32 27 27 21 21 0 20 35 17 21 21 17 12 33 19 31 22 34 21 26 23 28 31 26 30 29 31 32 20 27 21 26 0 30 11 16 32 31 24 18 25 30 29 33 28 27 15 28 19 19 22 32 27 17 33 32 11 37 28 0 35 21 21 35 39 33 27 31 28 32 10 28 23 26 20 33 25 20 35 27 28 26 10 24 24 19 0 30 26 33 13 34 28 15 14 18 19 10 12 25 25 23 29 21 18 31 21 11 18 25 21 28 18 0 21 21 27 28 23 35 13 31 25 25 30 23 24 33 34 33 35 28 12 34 24 26 10 18 15 26 0 23 28 25 31 23 24 28 27 20 22 23 32 11 13 30 28 38 26 21 28 17 31 38 22 10 31 0 29 26 14 22 29 25 13 33 33 26 11 34 25 23 32 27 15 32 16 11 14 24 23 23 27 26 0 */ #include #include #include using namespace std; long long mod=1e9+7; typedef long long int lld; #define rep(i,a,n) for(long long int i = (a); i <= (n); ++i) #define repI(i,a,n) for(int i = (a); i <= (n); ++i) #define repD(i,a,n) for(long long int i = (a); i >= (n); --i) #define repDI(i,a,n) for(int i = (a); i >= (n); --i) #define pb push_back #define mp make_pair #define ff first #define ss second #define sc(a) scanf("%lld",&a) #define sc2(a,b) scanf("%lld%lld",&a,&b) #define sc3(a,b,c) scanf("%lld%lld%lld",&a,&b,&c) #define scd(a) scanf("%d",&a) #define scd2(a,b) scanf("%d%d",&a,&b) #define scd3(a,b,c) scanf("%d%d%d",&a,&b,&c) #define scf(a) scanf("%lf",&a) #define scf2(a,b) scanf("%lf%lf",&a,&b) #define scf3(a,b,c) scanf("%lf%lf%lf",&a,&b,&c) #define prL(a) printf("%lld\n",a) #define prS(a) printf("%lld ",a) #define prdL(a) printf("%d\n",a) #define prdS(a) printf("%d ",a) #define Error(x) cout<< #x << " = " << (x) < PA; #define lim 1000010 #define lim2 1023 // inline lld sqr(lld x) { return x * x; } // unordered_map::iterator it; // std::ios::sync_with_stdio(false); // priority_queue Q; // lld dp[1<<18]; lld B[lim],A[lim],C[lim]; // PA P[lim],Q[lim]; lld n,m,p,q; // string S[lim],R[lim]; // vector V[lim]; // unordered_map Ind; lld powP(lld a,lld b){ if(b==0) return 1%mod; lld k; k=powP(a,b/2); k=k*k%mod; if(b%2==0) return k; else return a*k%mod; } bool bitSet(lld n,lld i){ if((n&(1LL<