EduBrick

N. Следующая перестановка

2000 мс · 256 МБ · всё или ничего

Дана перестановка чисел от 1 до NN. Выведите следующую за ней в лексикографическом порядке или сообщите, что она последняя.

Перебирать перестановки нельзя: при N=105N = 10^5 их немыслимо много, а ответ получается за один проход по массиву.

Приём такой: найти самый правый элемент, за которым идёт что-то большее; обменять его с наименьшим из больших справа; развернуть остаток. Именно это делает std::next_permutation, и полезно уметь написать это руками.

Формат ввода

Первая строка содержит число NN (1≤N≤1051 \le N \le 10^5).

Вторая строка содержит перестановку чисел от 1 до NN.

Формат вывода

Следующая перестановка через пробел или число −1-1, если данная перестановка последняя.

Примеры

ввод
3
1 2 3
вывод
1 3 2
ввод
3
3 2 1
вывод
-1
Войдите, чтобы отправлять решения.