p=[] for i in range(1000): if i%8==0: p+=[tuple(list(map(int,(str(i).zfill(3))[::-1])))] n,Q=map(int,input().split()) s=list(map(int,input()))[::-1] y=[[] for i in range(10)] for i in range(n): y[s[i]]+=[i] X=n*3 for i in range(10): for j in range(3): y[i]+=[X*(i*3+j+1)] from bisect import bisect_left def solve1(l,r,p): z=[] ll=l z+=[y[p[0]][bisect_left(y[p[0]],ll)]] ll=l if p[1]==p[0]: ll=z[0]+1 z+=[y[p[1]][bisect_left(y[p[1]],ll)]] ll=l if p[2]==p[0]: ll=z[0]+1 if p[2]==p[1]: ll=z[1]+1 z+=[y[p[2]][bisect_left(y[p[2]],ll)]] if max(z)>r: return X z[0]-=l z[1]-=l z[2]-=l return solve2(z) def solve2(z): p1,p2,p3=z if p1