#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std; #define LL long long #define INF 0x3f3f3f3f #define MOD 9973 #define eps 1e-6 #define MAXN 100010 #define MAXM 100 #define dd {cout<<"debug"<= l; i --) #define doe(i, x) for(i = 1; i <= x; i ++) int N; char str[MAXN]; int f[MAXN]; void ex_gcd(LL a, LL b, LL& d, LL& x, LL& y) { if(!b) { d = a; x = 1; y = 0; } else { ex_gcd(b, a % b, d, y, x); y -= x * (a/b); } } LL inv(LL a, LL n) { LL d, x, y; ex_gcd(a, n, d, x, y); return d == 1 ? (x + n) % n : -1; } LL qpow(LL x, LL k) { LL res = 1; while(k) { if(k & 1) res = res * x % MOD; x = x * x % MOD; k >>= 1; } return res; } // LL inv(LL a, LL x) // { // return qpow(a, x - 2); // } int main() { int a, b; while(scanf("%d", &N) != EOF) { scanf("%s", str); int len = strlen(str); for(int i = 0; i < len; i ++) f[i + 1] = (int)str[i] - 28; for(int i = 2; i <= len; i ++) f[i] = (f[i - 1] * f[i]) % MOD; f[0] = 1; for(int i = 0; i < N; i++) { scanf("%d %d", &a, &b); int ans = (f[b] * qpow(f[a - 1], MOD - 2)) % MOD; printf("%d\n", ans); } } return 0; }