Технология виртуальной памяти позволяет выполнять программы, требующие больше оперативной памяти, чем установлено в компьютере. В большинстве современных архитектур виртуальная память организуется с помощью страничной адресации. Рассмотрим упрощённо данную технологию.
Вся виртуальная память разделена на страницы — области памяти фиксированной длины. Когда программа обращается к какому-то адресу, то по адресу вычисляется номер страницы и проверяется, содержится ли данная страница в физической памяти либо выгружена на диск.
Если нужная страница выгружена на диск, то её нужно переместить в физическую память. Но, поскольку она занята другими страницами, сначала нужно какую-то страницу переместить из физической памяти на диск. Чтобы определить номер выгружаемой страницы, используется метод LRU (least recently used): на диск будет перемещена та страница, к которой дольше всего не было обращений. Если же таких страниц несколько, пусть это будет страница с наименьшим номером среди них.
Ваша задача — смоделировать работу описанной системы.
В первой строке вводится целое число $$$n$$$ — размер виртуальной памяти в страницах ($$$1 \le n \le 2 \cdot 10^5$$$).
Во второй строке вводится целое число $$$m$$$ — размер физической памяти в страницах ($$$1 \le m \le n$$$).
В третьей строке вводится целое число $$$k$$$ — количество обращений к страницам ($$$1 \le k \le 2 \cdot 10^5$$$).
В четвёртой строке вводятся $$$k$$$ целых чисел от $$$1$$$ до $$$n$$$ — номера страниц в порядке обращения к ним.
Перед началом работы программы в физической памяти находятся страницы с номерами от 1 до $$$m$$$, а на диске — страницы с номерами от $$$m+1$$$ до $$$n$$$.
Выведите в порядке возрастания $$$m$$$ целых чисел — номера страниц, находящихся в физической памяти по окончании работы программы.
3221 3
1 3
| Название |
|---|


