//百度之星 资格赛 A //write by Lone Wolf in 2016.05.14 #pragma comment(linker, "/STACK:102400000,102400000") #include #include #include #include #include #include #include #include #include #include #include #include #include #define PI (acos(-1.0)) #define lowbit(x) (x&(-x)) #define sspeed ios_base::sync_with_stdio(0);cin.tie(0) typedef long long LL; using namespace std; const int MOD=1000000007; const int INF=0x3f3f3f3f; const int N=10010; const int M=100010; const int Mat=110; typedef double Matrix[Mat][Mat]; const double eps=1e-10; inline int readint() { char c=getchar(); while (c<'0'||c>'9') c=getchar(); int x=0; while ('0'<=c&&c<='9') { x=x*10+c-'0'; c=getchar(); } return x; } int buf[10]; inline void writeint(int i) { int p=0; if (i==0) p++; else while (i) { buf[p++]=i%10; i/=10; } for (int j=p-1;j>=0;j--) putchar('0'+buf[j]); } int n,m; int p=9973; int f[N],H[M]; string str; void solve() { int i,j,k,a,b; while (scanf("%d",&n)!=EOF) { cin>>str; H[0]=1; for (i=1;i<=str.length();i++) { H[i]=(H[i-1]*(str[i-1]-28)+p)%p; } for (i=1;i<=n;i++) { scanf("%d%d",&a,&b); printf("%d\n",(H[b]*f[H[a-1]]+p)%p); } } return; } int main() { //freopen("test.in","r",stdin); //freopen("test.out","w",stdout); int i,T=1; f[1]=1; for (i=2;i<=p;i++) f[i]=f[p%i]*(p-p/i)%p; //scanf("%d",&T); for (i=1;i<=T;i++) { solve(); } return 0; }