#include #define MOD 1000000007 #define ll long long using namespace std; long long power(ll a, ll b) { if(b == 0) return 1; if(b == 1) return a % MOD; ll x = power(a, b / 2); x = (x * x) % MOD; if(b % 2 == 1) return (a * x) % MOD; else return x % MOD; } int main() { string s; cin >> s; vector > arr(s.length(), vector (26, 0)); vector fact(100001); vector afact(100001); fact[0] = 1; afact[0] = 1; for(int i = 1; i < 100001; ++i) { fact[i] = (fact[i - 1] * i) % MOD; afact[i] = power(fact[i], MOD - 2) % MOD; } arr[0][s[0] - 'a']++; for(int i = 1; i < s.length(); ++i) { arr[i] = arr[i - 1]; arr[i][s[i] - 'a']++; } int Q; cin>>Q; for(int i = 0; i < Q; ++i) { int L, R; cin>>L>>R; --L; --R; vector data; data = arr[R]; if(L != 0) { --L; for(int i = 0; i < 26; ++i) data[i] -= arr[L][i]; } int sum = 0; long long odds = 0; for(int i = 0; i < 26; ++i) { if(data[i] % 2 == 0) sum += data[i]; else { sum += data[i] - 1; ++odds; } } long long ans = fact[sum / 2]; for(int i = 0; i < 26; ++i) ans = (ans * afact[(data[i] - (data[i] % 2)) / 2]) % MOD; if(odds > 0) ans = (ans * odds) % MOD; cout<