#include <bits/stdc++.h>
#define mod 1000000007
using namespace std;
char s[100005];
int fac[100005],inv[100005];
int cnt[100005][26],num[26];
int nd[26];
inline int qpow(int a,int b)
{int res=1,tp=a;
while (b)
{if (b&1) res=1ll*res*tp%mod;
tp=1ll*tp*tp%mod;b>>=1;
}
return res;
}
int main (){
	int i,j,l,r,n,q;
	scanf ("%s",s+1);
	n=strlen(s+1);
	scanf ("%d",&q);
	fac[0]=1;
	for (i=1;i<=n;i++)
	{fac[i]=1ll*fac[i-1]*i%mod;}
	inv[n]=qpow(fac[n],mod-2);
	for (i=n-1;i>=0;i--)
	{inv[i]=1ll*inv[i+1]*(i+1)%mod;}
	for (i=1;i<=n;i++)
	{for (j=0;j<26;j++)
	{cnt[i][j]=cnt[i-1][j]+(s[i]=='a'+j);}
	}
	while (q--)
	{scanf ("%d%d",&l,&r);
	int co=0,all=0;
	for (i=0;i<26;i++)
	{num[i]=cnt[r][i]-cnt[l-1][i];
	nd[i]=(num[i]>>1);all+=nd[i];
	if (num[i]&1) {co++;}
	}
	if (co==0) co=1;
	int ans=fac[all];
	ans=1ll*ans*co%mod;
	for (i=0;i<26;i++)
	{ans=1ll*ans*inv[nd[i]]%mod;}
	printf ("%d\n",ans);
	}
	return 0;
}