你在山间行走。事实证明,这条山脉每隔一公里就有一座山峰,且中间没有其他山峰。在每一座山峰上,你都会躺下休息,向前望去,并认为前方的一座山峰是最高的。你认为最高的那座山峰可能并非真的最高,原因有两个:可能有一座更高的山峰被另一座更近但高度较低的山峰遮挡了;或者因为你在向下看,导致远处的山峰看起来比近处的更高。
准确地说,当我们说“从山峰 $A$ 看去,山峰 $B$ 看起来是最高的”时,意味着:$B$ 在 $A$ 前方的道路上;所有位于 $A$ 和 $B$ 之间的山峰都在连接 $A$ 和 $B$ 的直线下方;且所有比 $B$ 更远的山峰都在这条直线下方或直线上。
你不知道每座山峰的具体高度,但你的记忆力非常好;你走过所有的山峰,并记得从每一座山峰看去,哪一座山峰看起来是最高的。你希望为这些山峰设定一组高度,使其与这些信息相符。注意,你观察时是躺着的,因此我们假设你总是从每座山峰的地面高度进行观察。
在这个例子中,从第一座和第三座山峰看去,第四座山峰看起来是最高的。当你躺在第二座山峰上时,你看不到第四座山峰;第三座山峰遮挡了它,并看起来是最高的。
输入格式
输入的第一行包含测试用例的数量 $T$。接下来是 $T$ 个测试用例。每个测试用例包含两行。第一行包含一个数字 $N$,表示山峰的数量。你的旅程从第 $1$ 座山峰开始,一直走到第 $N$ 座山峰。下一行包含 $N-1$ 个数字 $x_i$。第 $i$ 个数字表示从第 $i$ 座山峰看去,看起来最高的山峰的编号(注意第 $N$ 座山峰是最后一座,因此从那里看去没有其他山峰)。
输出格式
对于每个测试用例,输出一行 "Case #n: y_1 y_2 ... y_N",其中 $n$ 是用例编号(从 $1$ 开始),$y_i$ 是第 $i$ 座山峰的高度。你可以输出任何符合输入数据的解,但所有输出的高度必须是 $0$ 到 $10^9$ 之间的整数。
如果不存在可能的解,则输出 "Case #n: Impossible"。
数据范围
$1 \le T \le 30$。
$i < x_i \le N$。
子任务 1
$2 \le N \le 10$。
子任务 2
$2 \le N \le 2000$。
样例
样例输入 1
4 6 2 3 4 5 6 4 4 4 4 4 3 4 4 4 4 3 4
样例输出 1
Case #1: 10 10 10 10 10 2 Case #2: 10 20 40 80 Case #3: Impossible Case #4: 5 3 6 8