#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;
}