/* 2018-01-02-20.37.00 */ #include #define ll long long int #define N 100010 using namespace std; ll mod=1e9+7; ll power(ll a,ll b) { if(b==0) return 1; ll temp=power(a,b/2); temp=(temp*temp)%mod; if(b%2==1) temp=(temp*a)%mod; return temp; } int main() { string s; cin >> s; ll q,cnt[N][26],i,j; ll ans[N]; scanf("%lld",&q); for(i=0;i<26;i++) for(j=0;j<=s.length();j++) cnt[j][i]=0; for(i=1;i<=s.length();i++) cnt[i][s[i-1]-'a']=1; for(i=0;i<26;i++) for(j=1;j<=s.length();j++) cnt[j][i]+=cnt[j-1][i]; ans[0]=1; for(i=1;i<=s.length();i++) ans[i]=(ans[i-1]*i)%mod; ll inv[N]; for(i=0;i<=s.length();i++) inv[i]=power(ans[i],mod-2); while(q--) { ll l,r,temp[26],p1=0,p2=0; scanf("%lld %lld",&l,&r); for(i=0;i<26;i++) temp[i]=cnt[r][i]-cnt[l-1][i]; for(i=0;i<26;i++) { p2+=temp[i]%2; temp[i]=(temp[i]/2); p1+=temp[i]; } ll k=ans[p1]; for(i=0;i<26;i++) if(temp[i]) k=(k*inv[temp[i]])%mod; if(p2>0) k=(k*p2)%mod; printf("%lld\n",k); } return 0; }