import sys input = sys.stdin.readline class SegmentTree: def __init__(self, n): self.n = n self.tree = [(float('inf'), float('inf'))] * (4 * n) def update(self, idx, val, node=1, start=1, end=None): if end is None: end = self.n if start == end: self.tree[node] = (val + start, val - start) return mid = (start + end) // 2 if idx <= mid: self.update(idx, val, node*2, start, mid) else: self.update(idx, val, node*2+1, mid+1, end) self.tree[node] = (min(self.tree[node*2][0], self.tree[node*2+1][0]), min(self.tree[node*2][1], self.tree[node*2+1][1])) def query_min_plus(self, left, right, node=1, start=1, end=None): if end is None: end = self.n if left > end or right < start: return float('inf') if left <= start and end <= right: return self.tree[node][0] mid = (start + end) // 2 return min(self.query_min_plus(left, right, node*2, start, mid), self.query_min_plus(left, right, node*2+1, mid+1, end)) def query_min_minus(self, left, right, node=1, start=1, end=None): if end is None: end = self.n if left > end or right < start: return float('inf') if left <= start and end <= right: return self.tree[node][1] mid = (start + end) // 2 return min(self.query_min_minus(left, right, node*2, start, mid), self.query_min_minus(left, right, node*2+1, mid+1, end)) def main(): ans_list = [] N, Q = map(int, input().split()) seg_tree = SegmentTree(N) for _ in range(Q): query = list(map(int, input().split())) if query[0] == 1: x = query[1] min_cost = x - 1 if x > 1: min_minus = seg_tree.query_min_minus(1, x-1) if min_minus != float('inf'): min_cost = min(min_cost, min_minus + x) if x <= N: min_plus = seg_tree.query_min_plus(x, N) if min_plus != float('inf'): min_cost = min(min_cost, min_plus - x) ans_list.append(min_cost) else: x, c = query[1], query[2] seg_tree.update(x, c) print('\n'.join(map(str, ans_list))) if __name__ == "__main__": main()