#include <bits/stdc++.h>

using namespace std;

#define MOD 1000000007

int n, m, cnt[100005][26], ta, tb, tc, td, te;
char x[100005];
long long fac[100005], inv[100005], ans;
vector< int > v;

long long po(long long b, int p) {
	long long re = 1;
	while (p) {
		if (p % 2)
			re = re * b % MOD;
		b = b * b % MOD;
		p /= 2;
	}
	return re;
}

long long ncr(int a, int b) {
	return fac[a] * inv[b] % MOD * inv[a - b] % MOD;
}

int main() {
	fac[0] = inv[0] = 1;
	for (int i = 1; i < 100005; i++)
		inv[i] = po(fac[i] = fac[i - 1] * i % MOD, MOD - 2);
	scanf("%s", x);
	for (; x[n]; n++) {
		memcpy(cnt[n + 1], cnt[n], 4 * 26);
		cnt[n + 1][x[n] -= 'a']++;
	}
	scanf("%d", &m);
	while (m--) {
		td = te = 0;
		ans = 1;
		v.clear();
		scanf("%d%d", &ta, &tb);
		for (int i = 0; i < 26; i++) {
			tc = cnt[tb][i] - cnt[ta - 1][i];
			v.push_back(tc / 2);
			td += tc / 2;
			te += tc % 2;
		}
		if (te)
			ans = te;
		for (int i = 0; i < v.size(); i++) {
			ans = ans * ncr(td, v[i]) % MOD;
			td -= v[i];
		}
		printf("%lld\n", ans);
	}
	return 0;
}