/***
week
2
1 4
2 3
***/
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
ll X[26][100009];
ll F[100009];
ll iF[100009];
#define MOD (1000000007ll)
ll mod(ll x)
{
	x %= MOD;
	x += MOD;
	x %= MOD;
	return x;
}
ll power(ll a, ll p)
{
	a = mod(a);
	if (p == 0)
		return 1;
	if (p == 1)
		return a;
	if (p == 2)
		return mod(a * a);
	return mod(power(power(a, p / 2), 2) * power(a, p % 2));
}
ll inv(ll x)
{
	return power(x, MOD - 2);
}
int main()
{
	F[0] = 1;
	for (ll i = 1; i < 100009; i++)
		F[i] = mod(F[i - 1] * i);
	for (ll i = 0; i < 100009; i++)
		iF[i] = inv(F[i]);
	ios_base::sync_with_stdio(false), cin.tie(NULL), cout.tie(NULL);
	string s;
	cin >> s;
	ll n = s.size();
	for (ll i = 0; i < n; i++)
	{
		X[s[i] - 'a'][i + 1]++;
	}
	for (ll t = 0; t < 26; t++)
	{
		for (ll i = 1; i <= n; i++)
			X[t][i] += X[t][i - 1];
	}
	ll q;
	cin >> q;
	while (q--)
	{
		ll l, r;
		cin >> l >> r;
		ll A[26];
		for (ll i = 0; i < 26; i++)
			A[i] = X[i][r] - X[i][l - 1];
		ll kiek = 0;
		for (ll i = 0; i < 26; i++)
			kiek += A[i] % 2;
		kiek = max(kiek, 1ll);
		for (ll i = 0; i < 26; i++)
			A[i] /= 2;
		ll suma = 0;
		for (ll i = 0; i < 26; i++)
			suma += A[i];
		kiek = mod(kiek * F[suma]);
		for (ll i = 0; i < 26; i++)
			kiek = mod(kiek * iF[A[i]]);
		cout << kiek << "\n";
	}
}