
Ви відвідуєте парк, у якому островів. З кожного острова прокладено рівно один міст. Довжина цього мосту позначається L_i. Усього у парку мостів. Хоча кожен міст побудований між двома островами, тепер кожен міст можна перетинати в обох напрямках. Крім того, між кожною парою островів існує унікальний пором, що курсує туди й назад.
Оскільки ви віддаєте перевагу пішим прогулянкам замість поїздок поромом, ви хочете максимізувати суму довжин мостів, якими можете пройти, дотримуючись наведених нижче правил.
Ви можете почати прогулянку з будь-якого острова.
Не можна відвідувати жоден острів більше одного разу.
У будь-який момент ви можете перейти з поточного острова на інший острів , який ще не відвідали. Перейти з на можна так:
Пішки: це можливо, лише якщо між цими островами є міст. У цьому випадку довжина мосту додається до вашого маршруту.
Пором: можна скористатися лише якщо неможливо дістатися з у будь-якою комбінацією мостів і/або вже використаних поромів (навіть через відвідані острови). Зверніть увагу: не обов'язково відвідати всі острови чи перетнути всі мости.
Дано мостів та їх довжини. Напишіть програму, яка обчислить максимальну можливу довжину маршруту мостами, дотримуючись описаних правил.
Ваша програма повинна зчитати з вхідного потоку:
У першому рядку ціле число — кількість островів у парку. Острови пронумеровано від до .
Далі рядків описують мости. -ий рядок містить два цілих числа, розділених пробілом: перше — номер іншого острова, друге — довжина мосту L_i. Кінці кожного мосту — завжди різні острови.
Виведіть одне ціле число — максимальну можливу довжину маршруту мостами.
Приклад 1
Примітка 1. Для деяких тестових даних відповідь може не вміщатися у -бітне ціле число. Щоб отримати повний бал, використовуйте у Pascal або long~long у C/C++.
Примітка 2. У середовищі тестування -бітні типи даних у Pascal зчитуються істотно повільніше, ніж -бітні типи, навіть якщо значення вміщуються у біти. Рекомендується використовувати для зчитування -бітні типи. Для деяких випадків на балів не перевищує .