//I_F_A #include "bits/stdc++.h" using namespace std; #define N 200001 #define mod 1000000007 vector fact(N); long long modF(long long n){ return (n%mod + mod)%mod; } long long power(long long a,long long n){ if(n == 0LL){ return 1LL; } long long x = power(a , n / 2); x = modF(x * x); if(n & 1) x = modF(x * a); return x; } void func(){ fact[0] = 1LL; for(long long i=1;i> s; long long n = s.length(); char arr[n+1]; func(); long long dp[n+1][26]; for(long long i=0;i<=n;i++){ for(long long j=0;j<26;j++){ dp[i][j] = 0LL; } } for(long long i=1;i<=n;i++){ arr[i] = s[i-1]; dp[i][arr[i]-'a'] = 1LL; for(long long j=0;j<26;j++){ dp[i][j] = dp[i][j] + dp[i-1][j]; } } long long q; cin >> q; while(q--){ vector brr(26,0LL); long long l,r; cin >> l >> r; long long odd = 0; for(long long i=0;i<26;i++){ brr[i] = dp[r][i] - dp[l-1][i]; if(brr[i] & 1){ odd++; } } if(odd == 0LL){ long long num = 0; for(long long i=0;i<26;i++){ brr[i] = brr[i]/2; num = num + brr[i]; } num = fact[num]; long long den = 1LL; for(long long i=0;i<26;i++){ den = modF(den * modF(fact[brr[i]])); } den = power(den , mod - 2); cout << modF(modF(num) * modF(den)) << endl; } else{ long long num = 0; for(long long i=0;i<26;i++){ brr[i] = brr[i]/2; num = num + brr[i]; } num = fact[num]; long long den = 1LL; for(long long i=0;i<26;i++){ den = modF(den * modF(fact[brr[i]])); } den = power(den , mod - 2); num = modF(modF(num) * modF(den)); num = modF(modF(num) * modF(odd)); cout << num << endl; } } }