#include using namespace std; #define sz 112345 typedef long long int lli; const int mod = 1e9 + 7; int fact[sz]; int bigMod(int b, int n) { if (n == 0) { return 1; } if (n == 1) { return b; } int x = bigMod(b, n / 2); x = (x * 1LL * x) % mod; if (n&1) { x = (x * 1LL * b) % mod; } return x; } int main() { fact[0] = 1; for (int i = 1; i < sz; i++) { fact[i] = (i * 1LL * fact[i - 1]) % mod; } string s; cin >> s; int q, l, r, n = s.length(); int a[n + 1][26]; memset(a, 0, sizeof a); for (int i = 0; i < n; i++) { for (int j = 0; j < 26; j++) { a[i + 1][j] = a[i][j]; } a[i + 1][s[i] - 'a']++; } scanf("%d", &q); while (q--) { scanf("%d%d", &l, &r); int x = 0, y = 0, b[26]; for (int i = 0; i < 26; i++) { int z = a[r][i] - a[l - 1][i]; b[i] = z / 2; x += b[i]; if (z % 2 == 1) { y++; } } lli ans = fact[x]; if (y > 1) { ans = (ans * y) % mod; } for (int i = 0; i < 26; i++) { ans = (ans * bigMod(fact[b[i]], mod - 2)) % mod; } printf("%lld\n", ans); } }