Ви працюєте над створенням компілятора для власної мови програмування і вже реалізували все, окрім менеджера пам'яті (МП). МП відповідає за виділення пам'яті для об'єктів та їх звільнення, коли вони більше не потрібні. У вашому комп'ютері є послідовно розташованих байтів пам'яті. Кожен об'єкт потребує певної кількості послідовних байтів у пам'яті. Під час виконання програма може надсилати два типи запитів до МП:
1) Виділити пам'ять для об'єкта розміром байт. Цей розмір може бути різним для різних об'єктів. Два об'єкти не можуть використовувати спільну пам'ять.
2) Видалити заданий об'єкт, для якого раніше була виділена пам'ять.
Вам наперед відомі всі запитів, які будуть надіслані до МП. Знайдіть спосіб їх обробки, або повідомте, якщо це неможливо. Гарантується, що буде не більше двох запитів другого типу.
Перший рядок містить два числа і (1 \le n \le 10^5, 1 \le m \le 10^5). Кожен з наступних рядків містить два цілі числа і . Якщо a = 1, то дорівнює розміру об'єкта, для якого слід виділити пам'ять. Якщо a = 2, то дорівнює індексу вже обробленого запиту і означає, що слід звільнити об'єкт, виділений тим запитом. Гарантується коректність вхідних даних, тобто вас не попросять видалити вже видалений об'єкт і так далі.
Якщо виконати всі запити неможливо, виведіть слово IMPOSSIBLE (без лапок). Інакше, для кожного запиту першого типу (коли a = 1), виведіть в окремому рядку одне число - позицію першого байта пам'яті, виділеної для об'єкта. Байтам у пам'яті присвоєно нумерацію з . Якщо існує декілька рішень, виведіть будь-яке.
Приклад 1