Паросполучення
Граф називається двудольним, якщо його множину вершин V можна розбити на дві множини вершин A та B, що не перетинаються, так щоб кінці довільного ребра у цьому графі знаходились у різних множинах. Паросполученням у графі називається підмножина S множини ребер E цього графа, яка не має спільних вершин (для довільних ребер e_{1 }= (u_1, v_1) та e_{2 }= (u_2, v_2), що лежать в S, вмконується u_{1 }= u_2, u_{1 }= v_2, v_{1 }= u_2 і v_{1 }= v_2).
Ваша задача знайти максимальне пароспучення у заданому двудольному графі. Максимальним називається паросполучення, яке скаладється з максимальної кількості ребер.
Вхідні дані
Перший рядок вхідного файлу містить два цілих числа N та M (1 ≤ N, M ≤ 250) - кількості вершин у множинах A та B відповідно. Наступні N рядків містять описи ребер графа. У (i+1)-му рядку міститься список вершин множини B, з'єднаних з i-ю вершиною множини A. Список завершується числом 0. Нумерація вершин у множинах A та B незалежна (вершини нумеруються з 1).
Вихідні дані
Перший рядок вихідного файлу повинен містити одне ціле число L - кількість ребер у максимальному паросполученні. Кожен з наступних L рядків повинен містити опис одного ребра паросполучення - два цілих числа u_i та v_i (номер вершини у множині A та номер вершини у множині B).