/* Author: Shadow007 */ #include using namespace std; /*typedef*/ typedef unsigned int uint; typedef long long lld; typedef unsigned long long ulld; typedef double lf; typedef long double llf; typedef pair pii; typedef pair plld; /*define*/ #define ff first #define ss second #define mp(a,b) make_pair(a,b) #define pb push_back #define pf push_front #define pob pop_back #define pof pop_front #define fl(i,a,b) for(int i=a;i<=b;i++) #define rfl(i,a,b) for(int i=a;i>=b;i--) /*const*/ const lld mod=1000000007; lld power(lld m,lld n){ lld ans=1; while(n){ if(n&1) ans=(ans*m)%mod; m=(m*m)%mod; n/=2; } return ans; } int main(){ ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); string s; cin>>s; int q; cin>>q; int l,r; vector fact(1000001); fact[0]=1; for(lld i=1;i<1000001;i++){ fact[i]=(i*fact[i-1])%mod; } vector> a(s.length()+1,vector(26)); for(int i=0;i>l>>r; l,r; vector k(26); lld tot=0; for(int i=0;i<26;i++){ k[i]=a[r][i]-a[l-1][i]; tot+=(k[i]/2); } lld count=0; for(int i=0;i<26;i++){ if(k[i]%2==1) count++; } lld ans=fact[tot]; for(int i=0;i<26;i++){ k[i]/=2; ans=(ans*(power(fact[k[i]],mod-2)))%mod; } if(count!=0) ans=(ans*count)%mod; cout<