На днях Игнат услышал новое для себя слово «дуализм». К сожалению, он совсем не так его понял, ведь теперь он считает, что между двумя числами есть дуализм, если их сумма — простое число. Сколько Вадим ни объяснял ему, что это глубокое свойство философских теорий, Игнат отказывался в это верить и стоял на своём.
После очередного неудачного разговора Вадим попрощался с Игнатом, но забыл у него кошелёк, в котором лежали N купюр. Игнат нашёл этот кошелёк и сразу же оповестил Вадима об этом, но ему стало интересно, сколько в этом кошельке лежит денег. Он сильно удивился, когда увидел, что там чётное число купюр, ведь это означает, что их можно разбить на пары так, что между стоимостями купюр из одной пары будет дуализм! Или же нет? Помогите Игнату ответить на этот вопрос.
Исходные данные
В первой строке дано целое число N — количество купюр в кошельке (2 ≤ N ≤ 500). Гарантируется, что N чётно.
Во второй строке даны N целых чисел ci — стоимости купюр (1 ≤ ci ≤ 106).
Результат
Выведите «NO», если разбить на пары требуемым образом невозможно. В противном случае выведите «YES», а в следующих N / 2 строках выведите по два целых числа ai и bi — разбиение на пары. ai+bi должно быть простым, набор всех ai и bi должен совпадать с набором всех ci.
Если есть несколько ответов, выведите любой из них.
Примеры
исходные данные | результат |
---|
8
6 2 4 5 2 3 1 5
| YES
5 2
3 2
5 6
1 4
|
2
1 3
| NO
|
Автор задачи: Игнат Нигматуллин
Источник задачи: Уральская командная олимпиада по программированию 2023