#include #include #include using namespace std; struct P { int v; int l,r,mid; }T[600010]; int n,x,y; char s[100010]; int len; void Build(int w,int l,int r) { T[w].l=l; T[w].r=r; T[w].mid=(l+r)>>1; if(l==r) { T[w].v=s[l]-28; return; } Build(w<<1,l,T[w].mid); Build(w<<1|1,T[w].mid+1,r); T[w].v=T[w<<1].v*T[w<<1|1].v%9973; } int Ask(int w,int l,int r) { if(T[w].l==l && T[w].r==r)return T[w].v; if(l>T[w].mid)return Ask(w<<1|1,l,r); if(T[w].mid>=r)return Ask(w<<1,l,r); return Ask(w<<1,l,T[w].mid)*Ask(w<<1|1,T[w].mid+1,r)%9973; } int main() { while(scanf("%d",&n)!=EOF) { scanf("%s",s+1); len=strlen(s+1); Build(1,1,len); while(n--) { scanf("%d%d",&x,&y); printf("%d\n",Ask(1,x,y)); } } return 0; }