def make_sa(s): n = len(s) sa = list(range(n)) ra = [*s] k, maxi = 1, max(300, n) while k < n: for kk in [k, 0]: c = [0]*maxi for i in range(n): c[ra[i+kk] if i+kk b: a, b = b, a return min(T[k:=(b-a).bit_length()-1][a+1], T[k][b+1-(1<j) u = S[i+x] if S[i+x]<=x+1 else 1; v = S[j+x] if S[j+x]<=x+1 else 1 return (u>v)-(u= st: Z += (p-st+1)*W[k]; st = p+1 k += 1 Z += (N-i-st+1)*W[k] print(Z%MOD)