class Rolling_Hash: def __init__(self,lst,base,mod=0,e_sum=0,e_prod=1): self.len=len(lst) self.base=base self.mod=mod self.e_sum=e_sum self.e_prod=e_prod self.rolling_hash=[lst[i] for i in range(self.len)]+[self.e_sum] self.pow_base=[self.e_prod] for i in range(self.len-1,-1,-1): self.rolling_hash[i]+=self.rolling_hash[i+1]*self.base self.pow_base.append(self.pow_base[-1]*self.base) if self.mod: self.rolling_hash[i]%=self.mod self.pow_base[-1]%=self.mod def Build_Pow(self,N): while len(self.pow_base)