#include #include using namespace std; #define debug(x) cout<<#x<<" :: "< pii; const int N = 1e5 + 5; const int MOD = 1e9 + 7; /***************************************************************************/ ll power(ll a, ll n, ll m) { if(n == 0) return 1; ll p = power(a, n/2, m); p = (p * p) % m; if(n%2) p = (p * a) % m; return p; } ll fact[N], ifact[N]; void calculateFact() { fact[0] = 1; for(int i=1; i=1; i--) { ifact[i-1] = (i * ifact[i]) % MOD; } } ll nck(int n, int k) { if(n < k) return 0; ll ans = fact[n]; ans = (ans * ifact[k]) % MOD; ans = (ans * ifact[n-k]) % MOD; return ans; } int mpc[26], bpc[26]; int freq[N][26]; int main() { boost; calculateFact(); string str; cin>>str; int len = str.length(); str = '_' + str; for(int i=1; i<=len; i++) { for(int j=0; j<26; j++) { freq[i][j] = freq[i-1][j]; } freq[i][str[i]-'a']++; } int q; cin>>q; while(q--) { int l, r; cin>>l>>r; ll ans = 1; int mp = 0, bp = 0; for(int j=0; j<26; j++) { bpc[j] = (freq[r][j] - freq[l-1][j]) % 2; bp += bpc[j]; mpc[j] = (freq[r][j] - freq[l-1][j] - bpc[j]) / 2; mp += mpc[j]; ans *= ifact[mpc[j]]; ans %= MOD; } ans *= fact[mp]; ans %= MOD; if(bp) ans *= bp; ans %= MOD; cout<