#include using namespace std; #define ll long long int #define MOD 1000000007 #define M(x) (x%MOD + MOD)%MOD #define _pb push_back #define _mp make_pair #define ff first #define ss second #define s(x) scanf("%lld",&x) ll mul(ll x,ll y) { ll ans=1; while(y>0) { if(y&1) ans=(ans*x)%MOD; y/=2; x=(x*x)%MOD; } return ans; }; /**********************************************/ ll a[100009][28],f[1000009]; int main() { string str; cin>>str; ll i,j; f[0] = 1; for(i=1;i<=1000000;i++) f[i] = (f[i-1]*i)%MOD; for(i=1;i<=str.size();i++) { for(j=0;j<26;j++) a[i][j] = a[i-1][j]; ++a[i][str[i-1]-'a']; } ll l,r,ans,q,len,cof,mid; cin>>q; while(q--) { cin>>l>>r; len = 0; cof = 0; ans = 1; for(j=0;j<26;j++) { mid = a[r][j] - a[l-1][j]; if(mid&1) ++cof; len+=mid/2; ans = (ans*mul(f[mid/2],MOD-2))%MOD; } ans = (ans*f[len])%MOD; if(cof>0) ans = (ans*cof)%MOD; cout<