CF BUDDY
← Problems·

1738D · Permutation Addicts

1900 · constructive algorithms, data structures, dfs and similar

Problem: Given a permutation a1,a2,,ana_1, a_2, \dots, a_n of integers from 11 to nn, and a threshold kk with 0kn0 \leq k \leq n, you compute a sequence b1,b2,,bnb_1, b_2, \dots, b_n as follows.

For every 1in1 \leq i \leq n in increasing order, let x=aix = a_i.

  • If xkx \leq k, set bxb_{x} to the last element aja_j (1j<i1 \leq j < i) that aj>ka_j > k. If no such element aja_j exists, set bx=n+1b_{x} = n+1.
  • If x>kx > k, set bxb_{x} to the last element aja_j (1j<i1 \leq j < i) that ajka_j \leq k. If no such element aja_j exists, set bx=0b_{x} = 0.

Unfortunately, after the sequence b1,b2,,bnb_1, b_2, \dots, b_n has been completely computed, the permutation a1,a2,,ana_1, a_2, \dots, a_n and the threshold kk are discarded.

Now you only have the sequence b1,b2,,bnb_1, b_2, \dots, b_n. Your task is to find any possible permutation a1,a2,,ana_1, a_2, \dots, a_n and threshold kk that produce the sequence b1,b2,,bnb_1, b_2, \dots, b_n. It is guaranteed that there exists at least one pair of permutation a1,a2,,ana_1, a_2, \dots, a_n and threshold kk that produce the sequence b1,b2,,bnb_1, b_2, \dots, b_n.

A permutation of integers from 11 to nn is a sequence of length nn which contains all integers from 11 to nn exactly once.

Input Format: Each test contains multiple test cases. The first line contains an integer tt (1t1051 \leq t \leq 10^5) — the number of test cases. The following lines contain the description of each test case.

The first line of each test case contains an integer nn (1n1051 \leq n \leq 10^5), indicating the length of the permutation aa.

The second line of each test case contains nn integers b1,b2,,bnb_1, b_2, \dots, b_n (0bin+10 \leq b_i \leq n+1), indicating the elements of the sequence bb.

It is guaranteed that there exists at least one pair of permutation a1,a2,,ana_1, a_2, \dots, a_n and threshold kk that produce the sequence b1,b2,,bnb_1, b_2, \dots, b_n.

It is guaranteed that the sum of nn over all test cases does not exceed 10510^5.

Output Format: For each test case, output the threshold kk (0kn0 \leq k \leq n) in the first line, and then output the permutation a1,a2,,ana_1, a_2, \dots, a_n (1ain1 \leq a_i \leq n) in the second line such that the permutation a1,a2,,ana_1, a_2, \dots, a_n and threshold kk produce the sequence b1,b2,,bnb_1, b_2, \dots, b_n. If there are multiple solutions, you can output any of them.

Note: For the first test case, permutation a=[1,3,2,4]a = [1,3,2,4] and threshold k=2k = 2 will produce sequence bb as follows.

  • When i=1i = 1, x=ai=1kx = a_i = 1 \leq k, there is no aja_j (1j<i1 \leq j < i) that aj>ka_j > k. Therefore, b1=n+1=5b_1 = n + 1 = 5.
  • When i=2i = 2, x=ai=3>kx = a_i = 3 > k, the last element aja_j that ajka_j \leq k is a1a_1. Therefore, b3=a1=1b_3 = a_1 = 1.
  • When i=3i = 3, x=ai=2kx = a_i = 2 \leq k, the last element aja_j that aj>ka_j > k is a2a_2. Therefore, b2=a2=3b_2 = a_2 = 3.
  • When i=4i = 4, x=ai=4>kx = a_i = 4 > k, the last element aja_j that ajka_j \leq k is a3a_3. Therefore, b4=a3=2b_4 = a_3 = 2.

For the second test case, permutation a=[1,2,3,4,5,6]a = [1,2,3,4,5,6] and threshold k=3k = 3 will produce sequence bb as follows.

  • When i=1,2,3i = 1, 2, 3, aika_i \leq k, there is no aja_j (1j<i1 \leq j < i) that aj>ka_j > k. Therefore, b1=b2=b3=n+1=7b_1 = b_2 = b_3 = n + 1 = 7.
  • When i=4,5,6i = 4, 5, 6, ai>ka_i > k, the last element aja_j that ajka_j \leq k is a3a_3. Therefore, b4=b5=b6=a3=3b_4 = b_5 = b_6 = a_3 = 3.

For the third test case, permutation a=[6,5,4,3,2,1]a = [6,5,4,3,2,1] and threshold k=3k = 3 will produce sequence bb as follows.

  • When i=1,2,3i = 1, 2, 3, ai>ka_i > k, there is no aja_j (1j<i1 \leq j < i) that ajka_j \leq k. Therefore, b4=b5=b6=0b_4 = b_5 = b_6 = 0.
  • When i=4,5,6i = 4, 5, 6, aika_i \leq k, the last element aja_j that aj>ka_j > k is a3a_3. Therefore, b1=b2=b3=a3=4b_1 = b_2 = b_3 = a_3 = 4.

Sample Cases

Case 1

Input

3
4
5 3 1 2
6
7 7 7 3 3 3
6
4 4 4 0 0 0

Output

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

Similar problems

00:00:00
Loading editor…
Welcome! I'm your coding tutor for this problem. Use the chips below to reveal stored hints or get AI feedback on your code. I'll guide you step by step — never giving away the solution.

Sign in to unlock AI tutor feedback