#include<bits/stdc++.h> #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<ALPHA;j++) pref[j][i]=pref[j][i-1]; pref[str[i-1]-'a'][i]++; } cin>>q; while(q--){ cin>>l>>r; x=y=m=n=0; ss=1LL; for(int i=0;i<ALPHA;i++){ if((pref[i][r]-pref[i][l-1])>1){ 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<<ss<<"\n"; } return 0; }