printРабочее место участника

printЗадачи

1846. Игра

Ограничения: время – 500ms/1000ms, память – 64MiB Ввод: input.txt или стандартный ввод Вывод: output.txt или стандартный вывод copy
Послать решение Blockly Посылки Темы Где Обсудить (0)

- Ну что, сыграем? – спросил Клапауций, тасуя колоду карт.
- Сыграем, – согласился Трурль, надевая очки.
Клапауций вытащил из колоды карты красной и зеленой масти с номерами от 1 до 10. Он отдал Трурлю все карты зеленой масти, а затем быстро перетасовал десять своих карт красной масти. Трурль тасовал карты неспешно, изредка поглядывая на стопку карт в руках Клапауция. Карты лежали рубашкой вверх, но рентгеновские очки позволяли видеть все номера на картах. "Клапауций, наверно, думает, что очки нужны мне, чтобы лучше видеть карты. Что ж, он не ошибается".
- Ладно, начнем, – сказал Трурль, закончив перемешивать карты.
Клапауций взял верхнюю карту, перевернул и выложил на стол – это оказалась шестерка. Трурль также бросил рядом с картой Клапауция верхнюю карту из своей стопки – тоже шестерка! Клапауций отбросил обе карты в сторону и выложил следующую карту. Тоже сделал и Трурль. У Трурля оказалась пятерка, а Клапауция – тройка.
- Мое, – заметил Трурль, взял пятерку со стола и положил ее на тройку. Получившуюся стопку из двух карт он перевернул рубашкой вверх и положил под стопку карт, которые держал в руках.
Следующая карта Трурля оказалась двойкой, а у Клапауция – девятка. Клапауций положил девятку на двойку, и, перевернув, положил карты под стопку своих карт.
Игра закончилась через минуту.
- И как тебе удается всегда выигрывать? – спросил Клапауций, оставшись без карт.
- Просто мне больше везет. Сыграем еще раз?
Правила игры достаточно просты. В начале игры у игроков на руках находится два одинаковых набора карт, различающихся только цветом и порядком. Карты на руках лежат рубашкой вверх. Игра происходит следующим образом. Игроки выкладывают на стол, переворачивая, по одной верхней карте. Если карты имеют одинаковые номера, они отбрасываются и в дальнейшей игре не участвуют. Если карты имеют различные номера, то тот, у кого номер карты больше, забирает обе карты со стола. При этом карта выигравшего "раунд" игрока кладется на карту проигравшего игрока, а затем карты переворачиваются и кладутся под стопку карт в руках выигравшего игрока. Если у одного из игроков больше нет карт на руках, то он проигрывает. Игра может закончиться и вничью, если карты закончились одновременно у обоих игроков.
Очевидно, Трурль может легко свести игру к ничьей, расположив свои карты в том же порядке, что и Клапауций. Но ему нужен только выигрыш. Напишите программу, которая позволяет по известному начальному расположению карт у противника составить выигрышную перестановку из тех же карт.
Формат ввода
Во входном файле в первой строке содержится целое число `N` (`2\ ≤\ N\ ≤\ 500`) – количество карт на руках у каждого игрока. Во второй строке содержится перестановка чисел от 1 до `N`, разделенных пробелом – расположение карт у Клапауция, перечисленных в порядке сверху вниз.
Формат вывода
В выходной файл в первой строке вывести слово "YES", если существует выигрышная перестановка из карт с номерами от 1 до `N`, или слово "NO", если такой перестановки нет. Во второй строке выходного файла нужно вывести одну (любую) из выигрышных перестановок, если таковая существует. Номера карт перечисляются в порядке сверху вниз и разделяются одним пробелом.

Пример ввода

4
2 3 4 1

Вывод для примера

YES
2 4 1 3
loading