#include #include #include #include #include #include #include using namespace std; long long mod=9973; char s[100000+10]; long long num[100000+10]; long long extend_gcd(long long a,long long b,long long &x,long long &y) { if(a==0&&b==0) return -1;//无最大公约数 if(b==0){x=1;y=0;return a;} long long d=extend_gcd(b,a%b,y,x); y-=a/b*x; return d; } //*********求逆元素******************* //ax = 1(mod n) long long mod_reverse(long long a,long long n) { long long x,y; long long d=extend_gcd(a,n,x,y); if(d==1) return (x%n+n)%n; else return -1; } int main() { int n; while(~scanf("%d",&n)){ scanf("%s",s); int len=strlen(s); num[0]=1; for(int i=0;s[i];i++) num[i+1]=s[i]-28; for(int i=1;i<=len;i++) num[i]=(num[i]*num[i-1])%mod; for(int i=1;i<=n;i++) { int li,ri; scanf("%d%d",&li,&ri); long long NI=mod_reverse(num[li-1],mod); long long ans=(num[ri]*NI)%mod; printf("%lld\n",ans); } } return 0; }