#include #include #include #include #include using namespace std; #define mod 1000000007 int cnt[100010][26]; int fac[100010]; long long pr(long long x, long long y) { long long t=x,ans=1; while(y) { if(y&1) { ans*=t; ans%=mod; } t*=t; t%=mod; y/=2; } return ans; } long long invmod(long long x) { return pr(x,mod-2); } int main() { string s; cin>>s; int n=s.length(); fac[0]=1; for(int i=1;i<=100000;i++) { fac[i]=(1LL*fac[i-1]*i)%mod; } for(int i=1;i<=n;i++) { for(int j=0;j<26;j++) cnt[i][j]=cnt[i-1][j]; cnt[i][s[i-1]-97]++; } int q; cin>>q; int l,r; while(q--) { cin>>l>>r; int len = r-l+1; //even length long long den =1; int pp=0; bool flag=true; int hh=0; for(int j=0;j<26;j++) { int val = cnt[r][j]-cnt[l-1][j]; if(val%2==1){ flag=false; hh++; } val/=2; pp+=val; den = den*fac[val]; den%=mod; } long long num = fac[pp]; long long ans = (num*invmod(den))%mod; if(flag==false){ ans=ans*hh; ans%=mod; } cout<