Олимпиадный тренинг

Задача . B. Коробка


Задача

Темы: Конструктив *1200

Перестановка \(p\)  — это последовательность целых чисел \(p=[p_1, p_2, \dots, p_n]\), которая состоит из \(n\) различных положительных целых чисел от \(1\) до \(n\). Например, следующие последовательности являются перестановками  — \([3, 4, 1, 2]\), \([1]\), \([1, 2]\). Следующие последовательности не являются перестановками  — \([0]\), \([1, 2, 1]\), \([2, 3]\), \([0, 1, 2]\).

Важный ключ спрятан в закрытой коробке, которую вам нужно открыть. Чтобы открыть коробку вам нужно ввести секретный ключ. Секретный ключ это перестановка \(p\) длины \(n\).

Эту перестановку вы не знаете, вы знаете только массив \(q\) префиксных максимумов этой перестановки. Формально:

  • \(q_1=p_1\),
  • \(q_2=\max(p_1, p_2)\),
  • \(q_3=\max(p_1, p_2,p_3)\),
  • ...
  • \(q_n=\max(p_1, p_2,\dots,p_n)\).

Вы хотите построить любую возможную исходную перестановку, которая согласуется с заданным массивом. Другими словами, найдите любую перестановку, что \(q\) для этой перестановки равен данному массиву.

Входные данные

В первой строке входных данных записано целое число \(t\) (\(1 \le t \le 10^4\)) — количество наборов входных данных в тесте. Далее следуют описания \(t\) наборов входных данных.

В первой строке описания набора входных данных записано одно целое число \(n\) \((1 \le n \le 10^{5})\) — количество элементов в перестановке-секретном коде \(p\).

Во второй строке описания набора входных данных записаны \(n\) целых чисел, \(q_1, q_2, \dots, q_n\) \((1 \le q_i \le n)\): элементы массива \(q\) для данной перестановки. Гарантируется, что \(q_i \le q_{i+1}\) для всех \(i\) (\(1 \le i < n\)).

Сумма всех значений \(n\) по всем наборам входных данных в тесте не превосходит \(10^5\).

Выходные данные

Для каждого набора входных данных выведите:

  • Если невозможно найти подходящую перестановку \(p\), выведите «-1» (без кавычек).
  • Иначе, выведите \(n\) различных целых чисел, \(p_1, p_2, \dots, p_n\) (\(1 \le p_i \le n\)). Если для набора входных данных есть несколько возможных ответов, вы можете вывести любой.
Примечание

В первом наборе входных данных примера \([1,3,4,5,2]\) это единственный возможный ответ.

  • \(q_{1} = p_{1} = 1\);
  • \(q_{2} = \max(p_{1}, p_{2}) = 3\);
  • \(q_{3} = \max(p_{1}, p_{2}, p_{3}) = 4\);
  • \(q_{4} = \max(p_{1}, p_{2}, p_{3}, p_{4}) = 5\);
  • \(q_{5} = \max(p_{1}, p_{2}, p_{3}, p_{4}, p_{5}) = 5\).

Можно доказать, что для второго набора входных данных примера не существует ответа.


Примеры
Входные данныеВыходные данные
1 4
5
1 3 4 5 5
4
1 1 3 4
2
2 2
1
1
1 3 4 5 2 
-1
2 1 
1

time 1000 ms
memory 256 Mb
Правила оформления программ и список ошибок при автоматической проверке задач

Статистика успешных решений по компиляторам
Комментарий учителя