M. Менеджер памяти
ограничение по времени на тест
1.5 секунд
ограничение по памяти на тест
64 мегабайта
ввод
стандартный ввод
вывод
стандартный вывод

Менеджеры памяти – части операционных систем и систем программирования, управляющие выделением, освобождением и распределением памяти. Самый низкий уровень менеджеров оперирует страницами физической памяти – унифицированными блоками одинаковой длины, на которые разбивается всё доступное адресное пространство.

Страничные менеджеры должны работать очень быстро и реализуют крайне простые алгоритмы. Разработайте простейший менеджер страниц, который будет работать по следующим правилам:

  1. Первоначально у менеджера $$$n$$$ свободных страниц, пронумерованных от $$$0$$$ до $$$n - 1$$$.
  2. Менеджер умеет выделять страницы только по одной. В результате выделения страница становится занятой и не выделяется повторно.
  3. Каждый $$$i$$$-й запрос на выделение содержит номер предпочитаемой страницы $$$h_i$$$ – той, которую желали бы получить.
  4. Если предпочитаемая страница с номером $$$h_i$$$ свободна, то менеджер выделяет именно её.
  5. Если предпочитаемая страница занята, то выделяется ближайшая свободная $$$r_i$$$, с минимальной разницей $$$|r_i - h_i|$$$. Если таких страниц 2, то выбирается страница с меньшим номером $$$r_i$$$.
  6. Выделив страницу, менеджер помечает её как занятую и возвращает её номер $$$r_i$$$ в качестве ответа на запрос.
  7. Предполагается, что у менеджера достаточно свободных страниц, чтобы удовлетворить все поступающие запросы.
Входные данные

Первая строка содержит два числа $$$n$$$ $$$(0 \lt n \le 10^5)$$$ и $$$k$$$ $$$(0 \lt k \le 10^5, k \le n)$$$, разделённых пробелом. Далее следуют $$$k$$$ строк, описывающих запрос. Каждый запрос состоит из одного числа $$$h_i$$$ $$$(0 \le h_i \lt n)$$$ – номера предпочитаемой страницы.

Выходные данные

Выведите $$$k$$$ строк, каждая из которых содержит одно целое число $$$r_i$$$ $$$(0 \le r_i \lt n)$$$ – номер страницы, выделенной в ответ на запрос $$$h_i$$$.

Примеры
Входные данные
5 3
0
2
4
Выходные данные
0
2
4
Входные данные
5 3
2
2
2
Выходные данные
2
1
3