小H最近在研究随机算法。随机算法往往需要通过调用随机数生成函数(例如Pascal中的random和C/C++中的rand)来获得随机性。事实上,随机数生成函数也并不是真正的“随机”,其一般都是利用某个算法计算得来的。
比如,下面这个二次多项式递推算法就是一个常用算法:
算法选定非负整数
对于任意
这样可以得到一个任意长度的非负整数数列
利用随机序列
- 初始设
为 到 的递增序列; - 对
进行 次交换,第 次交换,交换 和 的值。
此外,小H在这
为了检验这个随机排列生成算法的实用性,小H设计了如下问题:
小H有一个
接着小H希望从棋盘的左上角,也就是第一行第一列的格子出发,每次向右走或者向下走,在不走出棋盘的前提下,走到棋盘的右下角,也就是第
小H把所经过格子上的数字都记录了下来,并从小到大排序,这样,对于任何一条合法的移动路径,小H都可以得到一个长度为
小H想知道,她可能得到的字典序最小的路径序列应该是怎样的呢?
输入格式
输入文件的第1行包含5个整数,依次为
第2行包含三个整数
接下来
输出格式
输出一行,包含
样例一
input
1 3 5 1 71 3 4 3 1 7 9 9 4 9
output
1 2 6 8 9 12
explanation
根据输入的随机种子,小H所得到的前
9 5 30 11 64 42 36 22 1 9 5 30
根据这
6 9 1 4 5 11 12 2 7 10 3 8
在进行额外的
12 9 1 7 5 11 6 2 4 10 3 8
这个随机排列可以得到下面的棋盘:
12 | 9 | 1 | 7 |
5 | 11 | 6 | 2 |
4 | 10 | 3 | 8 |
最优路径依次经过的数字为
样例二
input
654321 209 111 23 70000001 10 10 0
output
1 3 7 10 14 15 16 21 23 30 44 52 55 70 72 88 94 95 97
样例三
input
123456 137 701 101 10000007 20 20 0
output
1 10 12 14 16 26 32 38 44 46 61 81 84 101 126 128 135 140 152 156 201 206 237 242 243 253 259 269 278 279 291 298 338 345 347 352 354 383 395
样例四
见样例数据下载
限制与约定
测试点编号 | 约定 | ||
---|---|---|---|
1 | |||
2 | |||
3 | |||
4 | |||
5 | |||
6 | |||
7 | |||
8 | |||
9 | |||
10 |
时间限制:
空间限制:
本题的空间限制是
一个32位整数(例如C/C++中的int和Pascal中的Longint)为