class SegTree: class Node: def __init__(self,v): self.v=v self.l=self.r=None def __init__(self,op,e,v,r=1<<20): self.op=op self.e=e self.root=None if isinstance(v,list): self.l,self.r=0,len(v) self.root=self._build(v,0,len(v)) else: self.l,self.r=0,v def _build(self,v,l,r): if r-l==1: return self.Node(v[l]) m=(l+r)//2 node=self.Node(self.e) node.l=self._build(v,l,m) node.r=self._build(v,m,r) node.v=self.op(node.l.v,node.r.v) return node def _set(self,p,x,node,l,r): if node is None: node=self.Node(self.e) if r-l==1: node.v=x return node m=(l+r)//2 if p