#!/bin/python3 import sys import math def initialize(s): # This function is called once before all queries. d = {} arr = [] singles=0 doubles=0 for char in s: if char in d: d[char] += 1 if d[char] % 2 == 0: doubles += 1 singles -= 1 else: singles += 1 else: d[char] = 1 singles += 1 arr.append((singles, doubles)) return arr def answerQuery(l, r, arr): # Return the answer for this query modulo 1000000007. if l < 0: return arr[l][0]*(math.factorial(arr[l][1])%1000000007)%1000000007 else: if arr[r][0] - arr[l][0] < 1: return (math.factorial(arr[r][1]-arr[l][1])%1000000007)%1000000007 return (arr[r][0]-arr[l][0])*(math.factorial(arr[r][1]-arr[l][1])%1000000007)%1000000007 if __name__ == "__main__": s = input().strip() arr = initialize(s) q = int(input().strip()) for a0 in range(q): l, r = input().strip().split(' ') l, r = [int(l), int(r)] result = answerQuery(l-2, r-1, arr) print(result)