#include #include #include #include #include using namespace std; long long mod = 1000000007; long long pow(long long a, long long b) { long long x = 1, y = a; while(b > 0) { if(b%2 == 1) { x=(x*y); if(x>mod) x%=mod; } y = (y*y); if(y>mod) y%=mod; b /= 2; } return x; } long long mmi(long long a) { return pow(a,mod-2); } vector factorial; long long findfac(long long a){ if(factorial.size() > a) return factorial[a]; if(factorial.size() == 0) factorial.push_back(1); for(long long i = factorial.size(); i <= a;i++) factorial.push_back((factorial[i-1]*i)%mod); return factorial[a]; } int main() { string s; cin>>s; vector temp(26, 0); vector > arr(s.size()+1, temp); for(long i=1;i<=s.size();i++){ arr[i] = arr[i-1]; arr[i][s[i-1]-'a']++; } long t; cin>>t; while(t--) { long l, r; scanf("%ld %ld", &l, &r); vector vals = arr[r]; for(long j=0;j<26;j++) vals[j] -= arr[l-1][j]; long long ans = 1; long long doubles = 0, singles = 0; for(long j=0;j<26;j++){ long long x = vals[j]/2; doubles += x; ans *= mmi(findfac(x)); ans %= mod; vals[j] %= 2; singles += vals[j]; } //cout<<"ans = "<