class SparseTable: def __init__(self, iterable, op=min): self.op=op self.n=len(iterable) self.log=(self.n-1).bit_length() self.table=[[None]*self.n for _ in range(self.log+1)] self.table[0]=list(iterable) for p in range(1,self.log+1): for cu in range(self.n): ncu=cu+(1<<(p-1)) if ncu=A[i+1]) f=SparseTable(f) g=SparseTable(g) for l,r in LR: if r-l==0: print(1,1) else: print(f.prod(l,r),g.prod(l,r))