Грабуй і Втікай
Хакер Кирило успішно виконав завдання, яке керівництво "Plunder Flee Inc." доручило йому минулого року, і тепер його перевели до центрального офісу. Перед ним стоїть нове завдання — покращити комп'ютерну мережу в центральному офісі. Мережа складається з n робочих станцій, з'єднаних n–1 мережевими кабелями; кожна пара станцій має не більше одного з'єднання. Інформація передається між станціями, поки не досягне адресата.
Наразі мережа налаштована так, що між будь-якими двома станціями існує лише один маршрут. Це рішення є економічним, але має серйозний недолік: будь-яка несправність кабелю робить мережу непрацездатною.
Керівництво попросило Кирила покращити мережу, використовуючи якомога менше додаткових кабелів, щоб мережа залишалася працездатною у випадку виходу з ладу одного кабелю.
Напишіть програму, яка, маючи структуру мережі, визначить мінімальну кількість додаткових кабелів, необхідних для покращення мережі, як описано вище.
Вхідні дані
Перша строка вхідного файлу містить ціле число n (2 ≤ n ≤ 1000), кількість робочих станцій у мережі. Наступні n–1 рядків описують комунікаційні зв'язки. Вони містять розділені пробілом номери станцій, з'єднаних кабелем i: цілі числа a_i та b_i (1 ≤ a_i, b_i ≤ n). Робочі станції ідентифікуються натуральними числами від 1 до n.
Вихідні дані
Перша строка вихідного файлу повинна містити ціле число m, кількість додаткових кабелів. Потім повинні слідувати m рядків, кожен з яких складається з пари цілих чисел, розділених пробілом, що позначають номери новоз'єднаних станцій.