## https://yukicoder.me/problems/no/2804 import heapq def main(): N, Q = map(int, input().split()) queries = [] for _ in range(Q): values = input().split() queries.append(values) fixed_members = [] non_fixed_menbers = [] fixed_members_set = set() member_num = 0 go_homed = [] for i, values in enumerate(queries): if values[0] == "1": _, s, r = values r = int(r) heapq.heappush(non_fixed_menbers, (r, s)) member_num += 1 while member_num > N: r, s = heapq.heappop(fixed_members) go_homed.append((i, r, s)) member_num -= 1 elif values[0] == "2": _, x = values N -= int(x) while member_num > N and len(non_fixed_menbers) > 0: r, s = heapq.heappop(non_fixed_menbers) if s not in fixed_members_set: go_homed.append((i, r, s)) member_num -= 1 while member_num > N: r, s = heapq.heappop(fixed_members) go_homed.append((i, r, s)) member_num -= 1 elif values[0] == "3": _, s, x = values x = int(x) N += x if s not in fixed_members: fixed_members_set.add(s) heapq.heappush(fixed_members, (r, s)) go_homed.sort() for _, _, s in go_homed: print(s) if __name__ == "__main__": main()