#include <bits/stdc++.h>
#define fio ios_base::sync_with_stdio(0);cin.tie(0);cout.tie(0)
using namespace std;
typedef long long int lli;
const int MM = 120000;

lli m,n,k,p1,p2,p3,p,f,a[MM];
string s,s1,s2;
int cnt[MM][26];
const lli mod = 1e9 + 7;
lli powmod(lli a1,lli b1,lli modx = mod) {lli res=1; a1%=modx; for(;b1;b1>>=1) {if(b1&1)res=res*a1%modx; a1=(a1*a1)%modx;}return res;}
lli inv(lli ax,lli modx = mod) { return powmod(ax,modx-2,modx); } 

lli fac[MM], ifac[MM];
void preFac(lli modx = mod)
{
    fac[0] = 1;
    ifac[0] = 1;
    for(int i=1; i<MM; i++)
    {
        fac[i] = (i*fac[i-1])%modx;
        ifac[i] = inv(fac[i], modx);
    }
}
lli nCr(lli N, lli R, lli modx = mod)
{
    if(R <= N && R >=0)
        return ((fac[N] * ifac[R])%modx * ifac[N-R])%modx;
    else
        return 0;
}

int main(){fio; // remove during scanf    
      
    cin >> s;
    preFac();
    for(int i=0; i<s.length(); i++) {
        for(int j=0; j<26; j++) {
            cnt[i+1][j] = cnt[i][j] + (s[i] == (char)('a' + j));
        }
    }
    cin >> m;
    int tem[26];
    while(m--) {
        int l, r;
        cin >> l >> r;
        lli del = 0;
        lli len = 0;

        for(int i=0; i<26; i++) {
            tem[i] = cnt[r][i] - cnt[l-1][i];
            del += tem[i]%2;
            len += tem[i]/2;
        }
        if(del == 0) del = 1;
        lli ans = (del * fac[len])%mod;
        for(int i=0; i<26; i++) {
            ans = (ans * ifac[tem[i]/2])%mod;
        }
        cout << ans << '\n';
    }
    return 0;
}