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+1) c=BIT(n+1) c.add(0,1) c.add(n,1) p[n]=n for _ in range(Q): t,x,y=map(int,(input().split()+["0"])[:3]) x-=1 a=x ok=0 ng=x+1 while ng-ok>1: m=(ok+ng)//2 if c.sum(m,x)>0: ok=m else: ng=m a=min(a,abs(x-ok)+p[ok]) ok=n ng=x-1 while ok-ng>1: m=(ok+ng)//2 if c.sum(x,m)>0: ok=m else: ng=m a=min(a,abs(x-ok)+p[ok]) if t==1: print(a) if t==2: if c.sum(x,x) and p[x]<=y: continue if c.sum(x,x)==0 and a<=y: continue c.add(x,-c.sum(x,x)+1) p[x]=y while 1: ok=0 ng=x+1 while ng-ok>1: m=(ok+ng)//2 if c.sum(m,x)>0: ok=m else: ng=m if ok==x: break if p[ok]<=abs(x-ok)+p[x]: break c.add(ok,-1) while 1: ok=n ng=x-1 while ok-ng>1: m=(ok+ng)//2 if c.sum(x,m)>0: ok=m else: ng=m if ok==x: break if p[ok]<=abs(x-ok)+p[x]: break c.add(ok,-1)