Оточуючі кола
Вам надано набір кіл C з різними радіусами, розташованих у різних позиціях, які можуть перекриватися. Коло з радіусом r може бути розміщене так, щоб охопити всі кола з набору C, якщо r є достатньо великим.
Може існувати більше ніж одна позиція для кола радіуса r, щоб охопити всі кола з набору C. Ми визначаємо область U як об'єднання площ охоплюючих кіл у всіх таких позиціях. Іншими словами, для кожної точки в U існує коло радіуса r, яке охоплює цю точку і всі елементи набору C. Ваше завдання — обчислити довжину периметра цієї області U.
Рисунок 1. показує приклад набору кіл C та області U. На рисунку три кола, що входять до C, зображені колами з суцільною окружністю, деякі можливі позиції охоплюючих кіл зображені колами з пунктирною окружністю, а область U зображена товстою пунктирною замкненою кривою.
Рисунок 1. Приклад набору кіл
Вхідні дані
Вхідні дані складаються з послідовності наборів даних. Кількість наборів даних менша ніж 100.
Кожен набір даних має наступний формат.
n rx_1 y_1 r_1x_2 y_2 r_2...x_n y_n r_n
Перша строка набору даних містить два додатні цілі числа, n та r, розділені одним пробілом. n означає кількість кіл у наборі C і не перевищує 100. r означає радіус охоплюючого кола і не перевищує 1000.
Кожна з n строк, що слідують за першою строкою, містить три цілі числа, розділені одним пробілом. (x_i, y_i) означає положення центру i-го кола з набору C, а r_i означає його радіус.
Ви можете припустити, що -500 ≤ x_i ≤ 500, -500 ≤ y_i ≤ 500, і 1 ≤ r_i ≤ 500.
Кінець введення вказується строкою, що містить два нулі, розділені одним пробілом.
Вихідні дані
Для кожного набору даних виведіть строку, що містить десятковий дріб, який означає довжину периметра (довжину окружності) області U.
Вихідні дані не повинні містити помилку більше ніж 0.01. Ви можете припустити, що, коли r змінюється на ϵ (|ϵ| < 0.0000001), довжина периметра області U не зміниться більше ніж на 0.001.
Якщо r занадто мале, щоб охопити всі кола з C, виведіть строку, що містить лише 0.0.
Жодні інші символи не повинні міститися у вихідних даних.
Рисунок 2. Останній набір даних з прикладу вводу