class BIT: def __init__(self, size): self.n = size self.tree = [0] * (self.n + 1) def add(self, i, x): i += 1 while i <= self.n: self.tree[i] += x i += i & -i def sum(self, l, r): if l > r or l < 0 or r >= self.n: return 0 return self._prefix_sum(r) - self._prefix_sum(l - 1) def _prefix_sum(self, i): i += 1 res = 0 while i > 0: res += self.tree[i] i -= i & -i return res n,Q=map(int,input().split()) p=[0]*n c=BIT(n) for _ in range(Q): t,x,y=map(int,(input().split()+["0"])[:3]) x-=1 a=p[x] if c.sum(x,x) else x if c.sum(0,x-1): ok=0 ng=x while ng-ok>1: m=(ok+ng)//2 if c.sum(m,x-1)>0: ok=m else: ng=m a=min(a,abs(x-ok)+p[ok]) if c.sum(x+1,n-1): ok=n-1 ng=x while ok-ng>1: m=(ok+ng)//2 if c.sum(x+1,m)>0: ok=m else: ng=m a=min(a,abs(x-ok)+p[ok]) if t==1: print(a) if t==2: if a<=y: continue c.add(x,-c.sum(x,x)+1) p[x]=y while c.sum(0,x-1): ok=0 ng=x while ng-ok>1: m=(ok+ng)//2 if c.sum(m,x-1)>0: ok=m else: ng=m if p[ok]<=abs(x-ok)+p[x]: break c.add(ok,-1) while c.sum(x+1,n-1): ok=n-1 ng=x while ok-ng>1: m=(ok+ng)//2 if c.sum(x+1,m)>0: ok=m else: ng=m if p[ok]<=abs(x-ok)+p[x]: break c.add(ok,-1)