#include <bits/stdc++.h>
typedef long long int lli;
const lli MOD = 1e9+7;

using namespace std;

lli invMod(lli a, lli b) {
  if (a<=1)
    return a;
  return (1-invMod(b%a, a)*b)/a;
}

vector<vector<int> > acum;
vector<lli> fact;
void initialize(string s) {
  acum.assign(26, vector<int>(s.size()+1, 0));
  for (int i=0; i<s.size(); ++i) {
    for (int j=0; j<26; ++j)
      acum[j][i+1]=acum[j][i];
    acum[s[i]-'a'][i+1]++;
  }
  fact.assign(1,1);
  for (int i=1; i<=s.size(); ++i)
    fact.push_back((fact.back()*i)%MOD);
}

int answerQuery(int l, int r) {
  vector<lli> cts(26);
  for (int i=0; i<26; ++i)
    cts[i] = acum[i][r]-acum[i][l-1];
  lli sum=0;
  for (lli c : cts)
    sum += c/2;
  lli res=0;
  for (lli c : cts)
    if (c%2==1)
      res++;
  if (res==0)
    res++;
  res = (res*fact[sum])%MOD;
  for (lli c : cts)
    res = (res*invMod(fact[c/2], MOD))%MOD;
  return (res+MOD)%MOD;
}

int main() {
    string s;
    cin >> s;
    initialize(s);
    int q;
    cin >> q;
    for(int a0 = 0; a0 < q; a0++){
        int l;
        int r;
        cin >> l >> r;
        int result = answerQuery(l, r);
        cout << result << endl;
    }
    return 0;
}