#!/bin/python3 import sys m = int(1000000007) fac = [1]*(102) for i in range(2,102): fac[i] = (i*fac[i-1])%m def modular_inverse(a): return pow(a,m-2,m) def cal(str, count, even): p = fac[even] for i in count: if i//2 != 0: p = (p * modular_inverse(fac[count[i]//2])) return p&m def answerQuery(s, l, r): str = s[l-1:r-l+1] count = [0]*(26) for i in str: count[ord(i) - ord('a')] += 1 even = odd = 0 for i in count: even += i //2 odd += i%2; return (cal(str, count, even)*odd)%m if __name__ == "__main__": s = input().strip() q = int(input().strip()) for a0 in range(q): l, r = input().strip().split(' ') l, r = [int(l), int(r)] result = answerQuery(s,l, r) print(result)