ENG  RUSTimus Online Judge
Online Judge
Задачи
Авторы
Соревнования
О системе
Часто задаваемые вопросы
Новости сайта
Форум
Ссылки
Архив задач
Отправить на проверку
Состояние проверки
Руководство
Регистрация
Исправить данные
Рейтинг авторов
Текущее соревнование
Расписание
Прошедшие соревнования
Правила

2174. Дуализм чисел

Ограничение времени: 1.0 секунды
Ограничение памяти: 256 МБ
На днях Игнат услышал новое для себя слово «дуализм». К сожалению, он совсем не так его понял, ведь теперь он считает, что между двумя числами есть дуализм, если их сумма — простое число. Сколько Вадим ни объяснял ему, что это глубокое свойство философских теорий, Игнат отказывался в это верить и стоял на своём.
После очередного неудачного разговора Вадим попрощался с Игнатом, но забыл у него кошелёк, в котором лежали 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