#include #define MAXN 100010 #define ALPHA 26 #define MOD 1000000007 using namespace std; int fact[MAXN+1],pref[ALPHA+1][MAXN+1]; string str; long long modex(long long a,long long b,long long c){ long long sol=1LL; while(b){ if(b&1LL){ sol*=a; sol%=c; } a*=a; a%=c; b>>=1; } return sol; } int main(){ ios::sync_with_stdio(false); cin.tie(0); cout.tie(0); int q,l,r,x,y,m,n; long long ss; cin>>str; pref[str[0]-'a'][1]=1; fact[0]=fact[1]=1; for(int i=2;i<=MAXN;i++) fact[i]=(int)(((long long)fact[i-1]*i)%MOD); for(int i=2;i<=str.size();i++){ for(int j=0;j>q; while(q--){ cin>>l>>r; x=y=m=n=0; ss=1LL; for(int i=0;i1){ if((pref[i][r]-pref[i][l-1])&1) x++; y+=((pref[i][r]-pref[i][l-1])/2); ss*=modex((long long)fact[(pref[i][r]-pref[i][l-1])/2],MOD-2,MOD); ss%=MOD; } else if((pref[i][r]-pref[i][l-1])==1) x++; } ss*=(long long)fact[y]; ss%=MOD; if(x){ ss*=(long long)x; ss%=MOD; } cout<