#5031. Problem 3. Farmer John's Favorite Permutation

0

Problem 3. Farmer John's Favorite Permutation

Problem 3. Farmer John's Favorite Permutation

USACO 2024 US Open Contest, Bronze

Farmer John 有一个长为 NN2N1052 \leq N \leq 10^5)的排列 pp,包含从 11NN 的每个正整数恰好一次。然而,Farmer Nhoj 闯入了 FJ 的牛棚并拆散了 pp。为了不至于太过残忍,FN 写了一些能够帮助 FJ 重建 pp 的提示。当 pp 中剩余多于一个元素时,FN 会执行以下操作:

pp 的剩余元素为 p1,p2,,pnp'_1, p'_2, \dots , p'_n

  • 如果 p1>pnp'_1 > p'_n,他写下 p2p'_2 并从排列中删除 p1p'_1
  • 否则,他写下 pn1p'_{n-1} 并从排列中删除 pnp'_n

最终,Farmer Nhoj 将按顺序写下 N1N - 1 个整数 h1,h2,,hN1h_1, h_2, \dots, h_{N-1}。给定 hh,Farmer John 希望得到你的帮助重建与 Farmer Nhoj 的提示相一致的最小字典序 pp,或者判断 Farmer Nhoj 一定犯了错误。我们知道,给定两个排列 pppp',如果在第一个两者不同的位置 ii 处有 pi<pip_i < p'_i,则 pp 的字典序小于 pp'

输入格式(从终端 / 标准输入读入):

每个测试点包含 TT 个独立的测试用例(1T101\le T\le 10)。每个测试用例的描述如下:

第一行包含 NN

第二行包含 N1N - 1 个整数 h1,h2,,hN1h_1, h_2, \dots, h_{N-1}1hiN1\le h_i\le N)。

输出格式(输出至终端 / 标准输出):

输出 TT 行,每个测试用例一行。

如果存在与 hh 相一致的 1N1\dots N 的排列 pp,输出字典顺序最小的 pp。如果不存在这样的 pp,输出 1-1

输入样例:


5
2
1
2
2
4
1 1 1
4
2 1 1
4
3 2 1

输出样例:


1 2
-1
-1
3 1 2 4
1 2 3 4

对于第四个测试用例,如果 p=[3,1,2,4]p=[3,1,2,4] 则 FN 将写下 h=[2,1,1]h=[2,1,1]


p' = [3,1,2,4]
p_1'  h_1 = 2
p' = [3,1,2]
p_1' > p_n' -> h_2 = 1
p' = [1,2]
p_1'  h_3 = 1
p' = [1]

注意排列 p=[4,2,1,3]p=[4,2,1,3] 也会产生同样的 hh,但 [3,1,2,4][3,1,2,4] 字典序更小。

对于第二个测试用例,不存在与 hh 相一致的 ppp=[1,2]p=[1,2]p=[2,1]p=[2,1] 均会产生 h=[1]h=[1],并非 h=[2]h=[2]

测试点性质: 测试点 2:N8N\le 8。测试点 3-6:N100N\le 100。测试点 7-11:没有额外限制。

供题:Chongtian Ma