#include #include using namespace std; typedef struct { int a; int b; int sum; }H; H shu[700001];int pum,s,e,len; char ch[100005]; void make(int i,int j,int num); void chaxun(int i,int j,int num); int main() { int n,i,j,k; while(scanf("%d",&n)!=EOF) { scanf("%s",ch+1); len=strlen(ch+1); make(1,len,1); for(i=1;i<=n;i++) { scanf("%d%d",&s,&e); pum=1; chaxun(s,e,1); printf("%d\n",pum); } } return 0; } void make(int i,int j,int num) { shu[num].a=i;shu[num].b=j; if(i==j) { shu[num].sum=(ch[i]-28)%9973; return; } else { int k=(i+j)/2; make(i,k,num*2); make(k+1,j,num*2+1); shu[num].sum=(shu[num*2].sum*shu[num*2+1].sum)%9973; } } void chaxun(int i,int j,int num) { if(shu[num].a>=s&&shu[num].b<=e) {pum*=shu[num].sum;pum%=9973;} else { int k=(shu[num].a+shu[num].b)/2; if(s>k) chaxun(i,j,num*2+1); else if(e<=k) chaxun(i,j,num*2); else {chaxun(i,j,num*2);chaxun(i,j,num*2+1);} } }