#include using namespace std; #define fill(a,val) memset(a, (val), sizeof a) #define pb push_back #define lli long long int #define scantype int #define endl "\n" #define unique(x) x.erase(unique(x.begin(),x.end()), x.end()) #define sort_f(x) sort(x.begin(),x.end()); #define sort_r(x) sort(x.rbegin(),x.rend()); lli MOD = 1000000007; lli inf = 1e15; void scan(scantype &x); lli powermod(lli _a,lli _b,lli _m){lli _r=1;while(_b){if(_b%2==1)_r=(_r*_a)%_m;_b/=2;_a=(_a*_a)%_m;}return _r;} lli string_to_number(string s){lli x=0; stringstream convert(s); convert>>x; return x;} lli add(lli a,lli b){lli x = (a+b)%MOD; return x; } lli mul(lli a,lli b){lli x = (a*b)%MOD; return x; } lli sub(lli a,lli b){lli x = (a-b+MOD)%MOD; return x; } lli divi(lli a,lli b){lli x = a;lli y = powermod(b,MOD-2,MOD);lli res = (x*y)%MOD;return res;} #define N 200003 int main() { ios_base::sync_with_stdio(false); cin.tie(NULL); lli fact[100005]; fill(fact,0); fact[0]=1; for(lli i=1L;i<100005;i++) { fact[i]=mul(fact[i-1],i); } string str; cin>>str; int n=(int)str.length(); lli arr[n+1][26]; fill(arr,0L); for(int i=1;i<=n;i++) { for(int j=0;j<26;j++) { if((int)(str[i-1]-'a')==j) { arr[i][j]=arr[i-1][j]+1L; } else { arr[i][j]=arr[i-1][j]; } } } int q; cin>>q; for(int i=0;i>l>>r; lli sum=0; lli cnt=0; for(int j=0;j<26;j++) { sum+=(arr[r][j]-arr[l-1][j])/2; if((arr[r][j]-arr[l-1][j])%2) { cnt++; } } lli ans=fact[sum]; for(int j=0;j<26;j++) { ans=divi(ans,fact[(arr[r][j]-arr[l-1][j])/2]); } if(cnt!=0) ans=mul(ans,cnt); cout<