#include #define f first #define s second #define mp make_pair #define pb push_back #define lp(i,a,n) for(int i=a;i<=n;++i) #define lpd(i,a,n) for(int i=a;i>=n;--i) #define mem(a,b) memset(a,b,sizeof a) #define all(v) v.begin(),v.end() #define println(a) cout <<(a) < pii; typedef pair pll; typedef vector vi; typedef vector vvi; typedef vector vll; typedef set si; typedef map mii; const int N = 100002; int n,q,f[N][26]; char a[N]; ll fact[N]; ll power(ll x, ll y){ if(!y) return 1; ll sq = power(x, y/2); sq = sq * sq % mod; if(y&1) sq = sq * x % mod; return sq; } int main(){ scanf("%s", a); n = strlen(a); f[0][a[0]-'a'] = 1; lp(i,1,n-1){ lp(j,0,25) f[i][j] = f[i-1][j]; f[i][a[i]-'a']++; } fact[0] = 1; lp(i,1,N-1) fact[i] = fact[i-1] * i % mod; readi(q); while(q--){ int l,r; read2i(l,r); --l, --r; int freq[26]; lp(j,0,25) freq[j] = f[r][j] - (l ? f[l-1][j] : 0); int odd = 0, len = 0; lp(j,0,25) odd += freq[j]&1, len += freq[j] / 2; odd = max(odd, 1); ll ans = fact[len] * odd % mod; lp(j,0,25) if(freq[j]/2) ans = ans * power(fact[freq[j]/2], mod-2) % mod; cout <