Граф называется двудольным, если его множество вершин 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 независимая (вершины нумеруются c 1).
Первая строка выходного файла должна содержать одно целое число L - количество ребер в максимальном паросочетании. Каждая из следующих L строк должна содержать описание одного ребра паросочетания - два целых числа u_i и v_i (номер вершины в множестве A и номер вершины в множестве B).