#define _CRT_SECURE_NO_WARNINGS #include #include #include #include #include #include using namespace std; typedef long long LL; const int mod = 9973; const int maxn = 500005; int extend_gcd(int a, int b, int &x, int &y) { if (a == 0 && b == 0) return -1;//无最大公约数 if (b == 0){ x = 1; y = 0; return a; } int d = extend_gcd(b, a%b, y, x); y -= a / b*x; return d; } //*********求逆元素******************* //ax = 1(mod n) int inv(int a) { int x, y; int d = extend_gcd(a, mod, x, y); if (d == 1) return (x % mod + mod) % mod; else return -1; } int n, k,m; char a[maxn]; int h[maxn]; int main(){ while (scanf("%d", &n)!=EOF){ scanf("%s", a + 1); m = strlen(a + 1); h[0] = 1; for (int i = 1; i <= m; i++){ h[i] = h[i - 1] * (a[i]-28) % mod; } int a, b; for (int i = 0; i < n; i++){ scanf("%d%d", &a, &b); printf("%d\n", h[b] * inv(h[a - 1]) % mod); } } return 0; }