#include <cstring>
#include <iostream>

using namespace std;

int acc[100010][26];
const int MOD = 1000000007;

long long fact[100010];
long long invfact[100010];

int main() {
    ios::sync_with_stdio(false);

    string s;
    cin >> s;

    for (int i = 1; i <= s.size(); i++) {
        memcpy(acc[i], acc[i-1], sizeof acc[i]);
        acc[i][s[i-1] - 'a']++;
    }

    fact[0] = 1;
    invfact[0] = 1;
    
    for (int i = 1; i <= s.size(); i++) {
        fact[i] = fact[i-1] * i % MOD;

        invfact[i] = 1;
        int exp = MOD-2;
        
        for (long long p = fact[i]; exp > 0; p = p * p % MOD, exp >>= 1)
            if (exp & 1)
                invfact[i] = invfact[i] * p % MOD;
    }

    int q;
    cin >> q;
    
    while (q--) {
        int l, r;
        cin >> l >> r;

        int sum = 0, rem = 0;
        long long ans = 1;
        
        for (int i = 0; i < 26; i++) {
            int tmp = acc[r][i] - acc[l-1][i];
            
            ans = ans * invfact[tmp/2] % MOD;
            sum += tmp/2;
            rem += tmp%2;
        }

        ans = ans * fact[sum] % MOD;
        ans = ans * max(rem, 1) % MOD;

        cout << ans << endl;
    }
}