Виявник глухого кута
Рада Вашого рідного міста вирішила покращити розміщення дорожніх знаків, особливо в тупиках. Вони надали Вам дорожню карту, і Ви повинні визначити, де встановити знаки, щоб позначити тупики. Завдання полягає в тому, щоб використати якомога менше знаків.
Дорожня карта складається з набору перехресть, з'єднаних вулицями з двостороннім рухом. Наступне правило описує, як визначити повне розміщення знаків тупика. Розглянемо вулицю , що з'єднує місце з іншим місцем. Вхід у з боку стає тупиковим, якщо після входу в з неможливо повернутися в , не роблячи розворот. Розворот — це поворот на градусів, що одразу змінює напрямок.
Щоб зменшити витрати, Ви вирішили не встановлювати зайві знаки тупика, як зазначено в наступному правилі. Розглянемо вулицю зі знаком тупика на в'їзді з боку та іншу вулицю зі знаком тупика на в'їзді з боку . Якщо після в'їзду в з можна досягти і в'їхати в , не роблячи розворот, то знак тупика на в'їзді з боку вулиці є зайвим. Див. приклади на рисунку E.1.
Рисунок E.1: Ілюстрація вхідних даних з прикладом розміщення незайвих знаків тупика.
Вхідні дані
Перший рядок містить два цілих числа і , де — кількість перехресть, а — кількість вулиць. Кожен з наступних рядків містить два цілих числа і , що вказують на те, що вулиця з двостороннім рухом з'єднує перехрестя і . Усі вулиці у вхідних даних різні.
Вихідні дані
У першому рядку виведіть кількість встановлених тупикових знаків. У кожному з наступних рядків виведіть два цілих числа і , що вказують на те, що на в'їзді з боку на вулицю, що з'єднує перехрестя і , необхідно встановити знак тупика. Рядки, що описують тупикові знаки, повинні бути відсортовані в порядку зростання , а при рівних значеннях — в порядку зростання .