#include #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; }