#include using namespace std; #define SPEED ios::sync_with_stdio(false); cin.tie(0); cout.tie(0) #define fileio freopen("in.in", "r", stdin),freopen("out.out", "w", stdout); #define ll long long int #define FF first #define SS second #define mp make_pair #define pb push_back #define pii pair #define pll pair #define sd(x) scanf("%d",&x) #define slld(x) scanf("%lld",&x) #define pd(x) printf("%d\n",x) #define plld(x) printf("%lld\n",x) #define pss printf #define MOD 1000000007 #define INF 1e18 #define eps 0.00001 #define endl '\n' #define debug(n1) cout<>=1; a=(a*a)%MOD; } return an; } int main() { cin>>s; fact[0]=1ll; for(ll i=1;i<=100000;i++) fact[i]=(fact[i-1]*i)%MOD; for(ll i=0;i<=100000;i++) ifact[i]=(powmod(fact[i],MOD-2))%MOD; for(int i=1;i<=s.length();i++) { ll j=s[i-1]-'a'; a[j][i]++; } for(int j=0;j<26;j++) for(int i=1;i<=s.length();i++) a[j][i]+=a[j][i-1]; cin>>q; for(int i=1;i<=q;i++) { ll l,r; cin>>l>>r; ll mi=-1; ll an=1; ll sum=0; ll cnt=0; for(int j=0;j<26;j++) { if((a[j][r]-a[j][l-1])%2) { /*if(mi==(a[j][r]-a[j][l-1])/2) cnt++; else if(mi<(a[j][r]-a[j][l-1])/2) cnt=1; mi=max(mi,(a[j][r]-a[j][l-1])/2);*/ cnt++; an=(an*ifact[(a[j][r]-a[j][l-1])/2])%MOD; sum+=(a[j][r]-a[j][l-1])/2; } else an=(an*ifact[(a[j][r]-a[j][l-1])/2])%MOD,sum+=(a[j][r]-a[j][l-1])/2; } an=(an*fact[sum])%MOD; if(cnt==0) cnt=1; cout<<(an*cnt)%MOD<