有许多不同的备份策略。最容易理解的是差异备份(differential backup)和增量备份(incremental backup)。
在使用增量备份时,我们创建自上一次备份以来发生变化的数据副本:例如,在周日进行完整备份后,我们在周一复制周一期间发生变化的数据;周二也是如此,依此类推。采用这种策略,复制的数据量相对较小,但恢复数据可能需要很多文件。例如,要恢复周五的数据,我们需要周日(完整备份)、周一、周二、周三和周四的备份副本。
在使用差异备份时,我们定期创建完整副本——例如,每个周日。接着,在周中的每一天,我们复制自上一次完整备份以来修改过的所有数据:周一复制周一的数据,周二复制周一和周二的数据,依此类推。备份数据的总容量相对较大,但恢复数据只需要两个文件:最新的差异备份和最新的完整备份。
Dump(1) 是一款流行的免费备份软件,它使用“备份级别”(backup level)的概念,可以执行增量或差异备份,以及无法简化为前述两种方法的更复杂的策略。备份级别的概念本身非常简单:当我们进行 $N$ 级备份时,我们会复制自上一次级别低于 $N$ 的备份以来修改过的所有文件。如果之前没有更低级别的备份,我们就会对所有数据进行一次完整的备份。
编写一个程序,根据备份计划找出恢复数据应该使用哪些备份文件。
输入格式
输入的第一行包含一个整数 $M$ —— 文件中的测试用例总数($0 < M \le 100\,000$)。
接下来的每行包含八个空格分隔的整数。前七个数字是备份计划,即在对应的星期几 $i$ 执行的备份级别 $N_i$:周日、周一、周二等($0 \le N_i \le 9$)。保证零级备份在周日执行,即第一个数字为零。
第八个数字是需要恢复数据的日期 $d$($0 \le d \le 6$)。注意,0 代表周日,6 代表周六。
输出格式
对于输入中的每一行,输出一行,包含一个数字序列 $d_j$,对应于制作恢复所需备份副本的日期($0 \le d_j \le 6$)。注意,最早的副本总是最先恢复,然后是较晚的副本,因此必须满足:$d_j < d_{j+1}$ 且 $N_{d_j} < N_{d_{j+1}}$。此外,恢复总是以最新的副本结束,因此序列中的最后一个数字必须等于 $d$。
样例
输入样例 1
4 0 0 0 0 0 0 0 4 0 8 8 8 8 8 8 3 0 2 3 4 5 6 7 4 0 7 2 6 3 5 4 4
输出样例 1
4 0 3 0 1 2 3 4 0 2 4