J. Пропущенный вызов
ограничение по времени на тест
2 секунды
ограничение по памяти на тест
256 мегабайт
ввод
стандартный ввод
вывод
стандартный вывод

Кстати, надо бы взглянуть, какого цвета квадратик на телефоне: за сегодня Джефф, кажется, много ходил... Однако изучение цвета квадратика пришлось отложить: телефон Джеффа зазвонил. Солнце было слишком ярким, и блики мешали увидеть, кто же звонит. Джефф провел пальцем по низу экрана и поприветствовал собеседника. Ему показалось, что кто-то ответил, назвав его по имени. Но телефон продолжал звонить...

Джефф смотрел на телефон: в руках у него был старый аппарат, которым он уже давно не пользовался. Да и офисное здание должно уже не первый год пребывать в запустении: арендаторы съехали, поскольку здание планировали отремонтировать, но процесс этот сильно затянулся.

Чуть позже Джефф узнает, что не услышал n телефонных звонков. Эти звонки были совершены с m номеров (т.е. с некоторых номеров Джеффу звонили неоднократно). Пропущенные звонки на телефоне отображаются списком в порядке поступления: самым верхним оказывается номер, звонок с которого был пропущен последним по времени. Однако если в списке уже есть пропущенный звонок с этого номера, то он будет удален из списка и сгруппирован с последним (возле номера будет число, обозначающее количество пропущенных звонков, но сейчас для нас это не важно).

Ваша задача — по списку из n звонков определить для каждого номера, какую самую удаленную позицию от верха списка этот номер мог занимать в течение того времени, за которое были совершены эти звонки. Считайте, что изначально список пропущенных звонков был пуст.

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

В первой строке содержатся целые числа n и m (1 ≤ m ≤ n ≤ 1000) — количество пропущенных звонков и количество номеров, с которых эти звонки были совершены.

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

С целью защиты персональных данных абонентов, звонивших Джеффу, каждому номеру сопоставлено целое число от 1 до m (одинаковые номера закодированы одним и тем же числом, разные — разными числами).

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

Выведите m целых чисел p1, p2, ..., pm, где число pk означает самую удаленную позицию от верха списка, которую мог занимать номер телефона, закодированный числом k.

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

Поясним приведенный пример.

Список после первого звонка: 2

Список после второго звонка: 4 2

Список после третьего звонка: 1 4 2

Список после четвертого звонка: 1 4 2

Список после пятого звонка: 4 1 2

Список после шестого звонка: 3 4 1 2

Список после седьмого звонка: 4 3 1 2

Список после восьмого звонка: 1 4 3 2

Список после девятого звонка: 4 1 3 2

Список после десятого звонка: 3 4 1 2