//I_F_A
#include "bits/stdc++.h"
using namespace std;

#define N 200001
#define mod 1000000007

vector<long long> 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<N;i++){
		
		fact[i] = modF(i * fact[i-1]);
	}
}

int main(){
	
	ios_base::sync_with_stdio(false);
	cin.tie(NULL);
	
	string s;
	cin >> 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<long long> 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;
		}
		
		
	}
}