#include #include #include #include #include using namespace std; unsigned int factorial(unsigned int n){ unsigned int k = 1; for(unsigned int i = 1; i <= n; i++){ k *= i; } return k; } unsigned int find_palindrome(string in){ vector repeats(256); vector pairs(256); unsigned int singles = 0; unsigned int sum = 0; for(size_t i = 0; i < in.size(); i++){ repeats[in[i]]++; } for(size_t i = 0; i < pairs.size(); i++){ if(repeats[i]%2 == 0){ pairs[i] += repeats[i]/2; } else if(repeats[i] > 1){ pairs[i] += (repeats[i]-(repeats[i]%2))/2; } else{ singles++; } } for(size_t i = 0; i < 256; i++){ sum += pairs[i]; } return factorial(sum); } int main() { string input; size_t q, l, r; cin >> input >> q; for(size_t i = 0; i < q; i++){ cin >> l >> r; cout << find_palindrome(input.substr(l-1, r-(l-1))) << endl; } return 0; }