Задачі
Disclosure
Disclosure
Задано ациклічний орієнтовний граф з \textbf{N }вершин та \textbf{K }ребер. Потрібно видалити з нього максимальну кількість ребер, щоб транзитивне замикання графа не змінилось.
Транзитивне замикання графа \textbf{G} - граф \textbf{G'}, який складається з множини вершин заданого графа \textbf{G }і множини ребер (\textbf{u}, \textbf{v}) таких, що існує шлях з вершини \textbf{u }у вершину \textbf{v }у графі \textbf{G}.
\InputFile
У першому рядку два числа \textbf{N }і \textbf{K}. Далі \textbf{K }рядків, у кожному з яких по два цілих числа \textbf{a_i} та \textbf{b_i}, які позначають наявність ребра, яке веде з вершини \textbf{a_i} у \textbf{b_i}. Граф не містить петель, циклів і кратних ребер.
\OutputFile
Вивести ті ребра, які необхідно залшти у графі, у вигляді пар з'єднаних ними вершин. Ребра можна виводити у довільному порядку.
\textbf{Обмеження}
\textbf{1} ≤ \textbf{N} ≤ \textbf{50000}
\textbf{0} ≤ \textbf{K} ≤ \textbf{50000}
\textbf{1} ≤ \textbf{a_i}, \textbf{b_i} ≤ \textbf{N}
Вхідні дані #1
5 6 1 2 2 3 3 5 4 5 1 5 1 3
Вихідні дані #1
1 2 2 3 3 5 4 5