#include<bits/stdc++.h>
#define mod 1000000007
using namespace std;
string x;
int dp[26][100001];
int fact[100001];
int ifact[100001];
int fast(int base, int exp){
 int res = 1;
 while(exp){
if(exp & 1) res = (res * 1LL * base) % mod;
 exp = exp >> 1;
 base = (base * 1LL * base) % mod;
 }
 return res;
}
int main(){

       cin >> x;
       for(int i = 1 ; i <= x.size() ; ++i){
        dp[x[i - 1] - 'a'][i] = 1;
       }
       int n = x.size();
       fact[0] = ifact[0] = 1;
       for(int i = 1 ; i <= n; ++i)  fact[i] = i * 1LL * fact[i - 1] % mod,  ifact[i] = fast(fact[i], mod - 2);

       for(int j = 0 ; j < 26 ; ++j)
       for(int i = 1 ; i <= x.size() ; ++i)
        dp[j][i] += dp[j][i - 1];

        int q;
        cin >> q;
        while(q--){
            int l, r;
            cin >> l >> r;
            int sum = 0;
            int odd = 0;
            int ways = 1;
            for(int i = 0 ; i < 26 ; ++i){
                int times = dp[i][r] - dp[i][l - 1];
                sum += (times/2);
                if(times % 2 != 0) odd += 1;
                ways = (ways * 1LL * ifact[times/2]) % mod;
            }
            ways = (ways *1LL* fact[sum]) % mod;
            if(odd == 0) odd = 1;
            ways = (ways * 1LL * odd) % mod;
            cout << ways  << endl;
        }

}