#include #include #include #include #include #include #include #define ll long long #define INF 2000000000 #define NINF -2000000000 #define M 1000000007 #define br '\n' using namespace std; char s[100002]; int sum[26][100002]; int fast_pow(long long base,long long n) { if(n==0) return 1; if(n==1) return base; long long halfn=fast_pow(base,n/2); if(n%2==0) return(halfn*halfn)%M; else return(((halfn*halfn)%M)*base)%M; } int findMMI_fermat(int n) { return fast_pow(n,M-2); } ll fact[100001]; void build() { fact[0]=1; for(int i=1;i<=100000;i++) { fact[i]=(fact[i-1]*i)%M; } } int main() { ios_base::sync_with_stdio(false); cin.tie(0); //freopen("input.txt","r",stdin); //freopen("output.txt","w",stdout); build(); cin>>(s+1); for(int i=0;i<26;i++) sum[i][0]=0; for(int i=1;s[i];i++) { for(int j=0;j<26;j++) { sum[j][i]=sum[j][i-1]; } sum[s[i]-'a'][i]++; } int q; cin>>q; int l,r; while(q--) { cin>>l>>r; ll num,den=1; int count[26]; ll len=0; for(int i=0;i<26;i++) { count[i]=sum[i][r]-sum[i][l-1]; } for(int i=0;i<26;i++) { den=(den*fact[(count[i]/2)])%M; len+=(count[i]/2); } num=fact[len]; ll ans=(num * findMMI_fermat(den))%M; int odd=0; for(int i=0;i<26;i++) { if(count[i]%2) odd++; } if(odd!=0) ans=(ans*odd)%M; cout<