Задачі
Match them up
Match them up
У цій задачі вам доведеться шукати максимальне паросполучення. І не просте, а лексикографічно мінімальне.
Задано двохдольний граф з \textbf{N} вершин у лівій долі, \textbf{N} вершин у правій долі і \textbf{K} ребер між ними.
Максимальне паросполучення --- максимальна за потужністю підмножина ребер графа \textbf{M}, така, що довільна вершина графа інцидентна не більше ніж одному ребру з \textbf{M}.
Нехай множинао ребер \{(\textbf{u_i}, \textbf{v_i})\} --- максимальне паросполучення, де \textbf{u_i} --- вершини з лівої долі, \textbf{v_i} ---вершини з правої долі. Випишемо усі вершини в одну послідовність у порядку: \textbf{u_1}, \textbf{v_1}, \textbf{u_2}, \textbf{v_\{2 \}},..., \textbf{u_m}, \textbf{v_m}.
Знайдіть максимальне паросполучення з лексикографічно мінімальною такою послідовністю вершин.
\InputFile
У першому рядку два числа \textbf{N} і \textbf{K} --- кількість вершин у кожній з долей та кількість ребер. Далі \textbf{K} рядків з описом ребер. Кожне ребро описується парою чисел \textbf{a_i} та \textbf{b_i}, де \textbf{a_i} --- вершина з лівої долі, а \textbf{b_i} --- з правої долі.
\OutputFile
У першому рядку виведіть розмір максимального паросполучення \textbf{m}. Далі \textbf{m} рядків по два числа \textbf{u_i}, \textbf{v_i} у кожному, де \textbf{u_i} --- вершина з лівої долі, а \textbf{v_i} --- вершина з правої долі, яка відповідає \textbf{i}-ому ребру паросполучення.
\textbf{Обмеження}
\textbf{1} ≤ \textbf{N} ≤ \textbf{10^3}
\textbf{0} ≤ \textbf{K} ≤ \textbf{10^5}
\textbf{1} ≤ \textbf{a_i}, \textbf{b_i} ≤ \textbf{N}
Вхідні дані #1
3 5 1 2 1 3 3 2 2 3 2 1
Вихідні дані #1
3 1 3 2 1 3 2