#include 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 > acum; vector fact; void initialize(string s) { acum.assign(26, vector(s.size()+1, 0)); for (int i=0; i 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; }