Олимпиадный тренинг

Задача . E. Интересный граф и яблоки


Хексадесимал очень любит рисовать. Её перу принадлежит большая коллекция графов, как ориентированных, так и не очень. Недавно она начала работу над натюрмортом «интересный граф и яблоки». Интересным считается такой неориентированный граф, у которого каждая вершина принадлежит только одному циклу: забавному кольцу, и, причём, не принадлежит никакому другому циклу. Забавное кольцо — это такой цикл, который проходит через все вершины графа ровно один раз. Также, к забавным циклам относятся петли.

Яблоки она уже нарисовала и некоторые рёбра в графе тоже. Но теперь стало непонятно, как же соединить оставшиеся вершины, чтобы получился в результате интересный граф? Ответ должен содержать наименьшее количество добавляемых рёбер. И, помимо всего прочего, ответ должен быть лексикографически наименьшим. Набор ребер (x1, y1), (x2, y2), ..., (xn, yn), где xi ≤ yi, лексикографически меньше набора (u1, v1), (u2, v2), ..., (un, vn), где ui ≤ vi, в том случае, если последовательность целых чисел x1, y1, x2, y2, ..., xn, yn лексикографически меньше последовательности u1, v1, u2, v2, ..., un, vn. Если Вы не справитесь, Хексадесимал Вас съест. Живьём.

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

В первой строке входных данных записана пара целых чисел n и m (1 ≤ n ≤ 50, 0 ≤ m ≤ 2500) — количество вершин и количество рёбер соответственно. В следующих строках записаны пары чисел xi и yi (1 ≤ xi, yi ≤ n) — вершины, между которыми уже проведены рёбра. Исходный граф может содержать кратные ребра и петли.

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

В первой строке выведите слово «YES» или «NO»: можно или нет построить интересный граф. Если ответ «YES», то во второй строке выведите k — количество рёбер, которые нужно добавить к исходному графу. И, наконец, выведите k строк: пары вершин xj и yj, между которыми нужно провести рёбра. Результат может содержать кратные рёбра и петли. k может быть равно нулю.


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

time 1000 ms
memory 64 Mb
Правила оформления программ и список ошибок при автоматической проверке задач

Статистика успешных решений по компиляторам
 Кол-во
С++ Mingw-w645
Комментарий учителя