冷热数据队列
题号:NC308524
时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 256 M,其他语言512 M
64bit IO Format: %lld

题目描述

冷热数据队列 q 可以看做由两个子队列组成:长度为 n_1 的热数据队列 q_1 和长度为 n_2 的冷数据队列 q_2。当我们需要访问某个数据页 p 时:

1. 若 p 不在队列 q 中(即既不在 q_1 中,也不在 q_2 中),则加载数据页 p,并插入到 q_2 的首部。
2. 若 p 已经在队列 q 中,则将 p 移动至 q_1 首部。
3. 当 q_1q_2 队列容量不足时,会将其尾部的数据页淘汰出去。
4. 当 q_1 已满,但 q_2 未满时,从 q_1 中淘汰出的数据页会移动到 q_2 首部。

输入描述:

输入的第一行包含两个正整数 n_1, n_2,用一个空格分隔。

第二行包含一个整数 m,表示操作次数。

第三行包含 m 个非负整数 v_1, v_2, \cdots, v_m,表示依次访问到的数据页的编号,相邻整数之间使用一个空格分隔。

- 对于所有评测用例,1 \leq n_1, n_2 \leq 10^41 \leq m \leq 10^50 \leq v_i \leq 10^4

输出描述:

输出两行。

第一行包含若干个整数,相邻整数之间使用一个空格分隔,依次表示 q_1 中的数据页。

第二行包含若干个整数,相邻整数之间使用一个空格分隔,依次表示 q_2 中的数据页。
示例1

输入

复制
3 3
10
1 2 3 4 3 2 2 1 3 4

输出

复制
4 3 2
1

说明