/*** week 2 1 4 2 3 ***/ #include using namespace std; typedef long long ll; ll X[26][100009]; ll F[100009]; ll iF[100009]; #define MOD (1000000007ll) ll mod(ll x) { x %= MOD; x += MOD; x %= MOD; return x; } ll power(ll a, ll p) { a = mod(a); if (p == 0) return 1; if (p == 1) return a; if (p == 2) return mod(a * a); return mod(power(power(a, p / 2), 2) * power(a, p % 2)); } ll inv(ll x) { return power(x, MOD - 2); } int main() { F[0] = 1; for (ll i = 1; i < 100009; i++) F[i] = mod(F[i - 1] * i); for (ll i = 0; i < 100009; i++) iF[i] = inv(F[i]); ios_base::sync_with_stdio(false), cin.tie(NULL), cout.tie(NULL); string s; cin >> s; ll n = s.size(); for (ll i = 0; i < n; i++) { X[s[i] - 'a'][i + 1]++; } for (ll t = 0; t < 26; t++) { for (ll i = 1; i <= n; i++) X[t][i] += X[t][i - 1]; } ll q; cin >> q; while (q--) { ll l, r; cin >> l >> r; ll A[26]; for (ll i = 0; i < 26; i++) A[i] = X[i][r] - X[i][l - 1]; ll kiek = 0; for (ll i = 0; i < 26; i++) kiek += A[i] % 2; kiek = max(kiek, 1ll); for (ll i = 0; i < 26; i++) A[i] /= 2; ll suma = 0; for (ll i = 0; i < 26; i++) suma += A[i]; kiek = mod(kiek * F[suma]); for (ll i = 0; i < 26; i++) kiek = mod(kiek * iF[A[i]]); cout << kiek << "\n"; } }