Alexey 正在大学里修读“算法与数据结构”课程。他已经学了不少有趣的算法,最近他拿到了一个新的家庭作业任务。
给定一个包含 $n$ 个元素的大数组,他需要找出其中最大的 $k$ 个元素。
“听起来很简单嘛!”——Alexey 心想,并立即开始着手实现。
5 分钟,10 分钟,15 分钟……终于,算法写好了。
运行测试……
“噢……超出内存限制(Memory limit exceeded)!”——Alexey 开始变得烦躁。但无论他怎么尝试,总是得到“内存超限”的错误。
突然,一个绝妙的想法闪过他的脑海。
“ACM!”——他惊呼道。他想起今天是一个非常重要的日子,来自整个莫斯科赛区最富有天赋的人们正在参加程序设计竞赛的复赛(quarterfinal)。
据 Alexey 所知,程序员们不仅聪明绝顶,而且非常善良。他决定请求你帮助他完成这份家庭作业。
请注意,你的算法必须非常快,且内存限制非常严格!
输入格式
输入的第一行包含两个空格隔开的整数 $n$ 和 $k$($1 \le n \le 10^8$,$1 \le k \le 2 \cdot 10^5$,$k \le n$)。
第二行包含五个空格隔开的整数 $x_{-1}$、$x_0$、$A$、$B$ 和 $C$,每个数都在 $0$ 到 $2^{31} - 1$ 之间(含两端)。
数组由数字 $x_1, x_2, \dots, x_n$ 组成,其中 $x_i = (A \cdot x_{i-2} + B \cdot x_{i-1} + C) \bmod 2^{31}$。
输出格式
你必须按非递增顺序输出数组中最大的 $k$ 个元素。元素之间必须用单个空格隔开。
样例
输入样例 1
5 3 0 0 0 1 1
输出样例 1
5 4 3
说明
在样例中,生成的序列为 1, 2, 3, 4, 5。