#include #include #include #include #include #include #include #include #include #include #include using namespace std; const int maxn=100000 + 10; char str[maxn]; struct Tnode{ int l,r; int v; }node[maxn*4]; int sum; void pushup(int t) { node[t].v=(node[t<<1].v*node[t<<1|1].v)%9973; } void build(int t,int l,int r) { node[t].l=l; node[t].r=r; node[t].v=0; if(l==r){ node[t].v=(str[l]-28); return ; } int mid=(l+r)>>1; build(t<<1,l,mid); build(t<<1|1,mid+1,r); pushup(t); } void Query(int t,int l,int r) { if(node[t].l==l&&node[t].r==r){ sum=(sum*node[t].v)%9973; return ; } int mid=(node[t].l+node[t].r)>>1; if(l>mid)Query(t<<1|1,l,r); else if(r<=mid)Query(t<<1,l,r); else { Query(t<<1,l,mid); Query(t<<1|1,mid+1,r); } } int main() { int n; while(~scanf("%d\n",&n)){ int i,j; scanf("%s",str+1); int len=strlen(str+1); int pre=0; build(1,1,len); for(i=0;ir)swap(l,r); if(l<1||l>len||r<1||r>len){ printf("%d\n",sum); continue; } sum=1; Query(1,l,r); printf("%d\n",sum); //pre=sum; } } return 0; }