#include <bits/stdc++.h>
using namespace std;
const long long md=1e9+7;


string s;
int dp[100005][26];
long long f[100006];
long long fp[100006];
int kol[27];


inline long long pw(long long x,long long y){
    long long res=1;
    while (y) {
        if (y&1) res=(res*x)%md;
        x=(x*x)%md;
        y>>=1;
    }
    return res;
}

int main(){
    ios_base::sync_with_stdio(false); cin.tie(0); cout.tie(0);
    cin>>s;
    for (int i=1;i<=s.size();++i) {
        for (int j=0;j<26;++j)
            dp[i][j]=dp[i-1][j];
        ++dp[i][s[i-1]-'a'];
    }
    f[0]=1;
    fp[0]=1;
    for (int i=1;i<=1e5+5;++i)
        f[i]=(f[i-1]*1ll*i)%md;
    for (int i=1;i<=1e5+5;++i)
        fp[i]=pw(f[i],md-2);
    int n;
    cin>>n;
    while (n--) {
        int l,r;
        cin>>l>>r;
        bool t=false;
        for (int i=0;i<26;++i) {
            kol[i]=dp[r][i]-dp[l-1][i];
            if (kol[i]&1) t=true;
        }
        long long res=1;
        int len=0;
        for (int i=0;i<26;++i) if (kol[i]) {
            int z=(kol[i]>>1);
            len+=z;
        }
        res=f[len];
        int kk=0;
        for (int i=0;i<26;++i) if (kol[i]) {
            int z=(kol[i]>>1);
            res=(res*fp[z])%md;
            kol[i]%=2;
            kk+=kol[i];
        }
        if (kk) res=(res*1ll*kk)%md;
        cout<<res<<'\n';
    }
}