#include #include 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; } }