G. НОД шифрование
ограничение по времени на тест
1 секунда
ограничение по памяти на тест
256 мегабайт
ввод
стандартный ввод
вывод
стандартный вывод

Наибольший общий делитель (НОД) — это фундаментальное понятие в математике, которое помогает нам понять взаимосвязь между двумя числами. Это наибольшее положительное целое число, которое делит два разных числа без остатка.

Нахождение НОД — важный навык, который можно использовать во многих областях математики, включая алгебру, теорию чисел и криптографию. Например, в криптографии безопасность некоторых схем шифрования зависит от сложности нахождения НОД двух больших простых чисел.

Однажды Алекс решил бросить вызов самому себе, придумав собственный алгоритм шифрования с использованием НОД. Он изучал различные методы шифрования и был вдохновлен на создание чего-то нового и уникального.

Алекс часами изучал учебники и искал информацию в Интернете, пытаясь найти способ создать надежный и простой в использовании алгоритм шифрования.

Вместо больших простых чисел он решил кодировать свои данные одним массивом положительных целых чисел $$$a_1, \ldots, a_n$$$. Этот массив имеет значение только если он упорядочен в определенном порядке, поэтому Алекс хорошим образом перемешал свой массив.

Алекс знает, что изначальный порядок имел очень особенное свойство: числа $$$(a_i + i)$$$ не были взаимно простыми. Более формально, выполнялось условие $$$\text{НОД}(a_1 + 1, a_2 + 2, \ldots, a_n + n) \neq 1$$$.

Вскоре Алекс заметил, что расшифровать его шифр — далеко не одна из простых задач. У него есть уже перемешанный массив $$$a_1, \ldots, a_n$$$ длины $$$n$$$. Помогите ему восстановить изначальный порядок массива или сообщите Алексу что такого порядка не существует и он где-то ошибся. Если таких порядков может быть несколько, можно вывести любой.

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

В первой строке входного файла дано одно целое число $$$n$$$ — размер массива $$$a$$$ ($$$2 \le n \le 10^5$$$).

Во второй строке входного файла дано $$$n$$$ целых чисел $$$a_1, \ldots, a_n$$$ ($$$1 \le a_i \le 10^9$$$).

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

Если заданный массив нельзя расшифровать, выведите 'NO'. Иначе, выведите 'YES' в первой строке и выведите расшифрованный массив $$$a'_1, \ldots, a'_n$$$ во второй строке.

Примеры
Входные данные
3
1 2 5
Выходные данные
YES
5 2 1
Входные данные
3
2 2 3
Выходные данные
NO
Примечание

$$$\text{НОД}(5 + 1, 2 + 2, 1 + 3) = \text{НОД}(6, 4, 4) = 2 \neq 1$$$. Также существует решение $$$(1, 2, 5)$$$ поскольку также $$$\text{НОД}(1 + 1, 2 + 2, 5 + 3) = 2 \neq 1$$$.