EduBrick

N. Менеджер памяти

2000 мс · 256 МБ · всё или ничего

В распоряжении менеджера массив из NN последовательных ячеек памяти, пронумерованных от 11 до NN. Он обрабатывает запросы двух видов.

Выделение с параметром KK: приложение просит KK последовательных свободных ячеек. Если подходящий блок есть, менеджер обязан его выделить, причём непосредственно перед первой ячейкой выделенного блока не должно оставаться свободной ячейки. Если подходящего блока нет, запрос отклоняется.

Освобождение с параметром TT: память, выделенная по запросу номер TT, освобождается и снова может использоваться. Если запрос TT был отклонён, освобождение игнорируется.

В исходной задаче не сказано, какой из подходящих свободных блоков выбирать. Здесь правило зафиксировано: наибольший свободный блок, при равных размерах — самый левый.

Формат ввода

Первая строка содержит числа NN и MM (1≤N≤231−11 \le N \le 2^{31} - 1, 1≤M≤1051 \le M \le 10^5) — количество ячеек и количество запросов.

Каждая из следующих MM строк содержит либо положительное число KK (1≤K≤N1 \le K \le N) — запрос на выделение, либо отрицательное число −T-T (1≤T<i1 \le T < i для ii-го запроса) — запрос на освобождение.

Формат вывода

Для каждого запроса на выделение выведите номер первой ячейки выделенного блока или −1-1, если запрос отклонён.

Примеры

ввод
42 9
7
3
8
-2
6
5
-5
9
4
вывод
1
8
11
19
25
30
19
Войдите, чтобы отправлять решения.