Закреплённый воздушный шар
Воздушный шар, находящийся на земле, прикреплен к одному или нескольким якорям с помощью веревок. Каждая веревка достаточно длинная, чтобы соединить воздушный шар с якорем. Веревки не пересекаются между собой. Рисунок 1 иллюстрирует такую ситуацию.
Рисунок 1: Воздушный шар и веревки на земле
Теперь воздушный шар поднимается, и ваша задача — определить максимальную высоту, на которую он может взлететь, оставаясь прикрепленным к веревкам. Позиции якорей фиксированы. Длины веревок и позиции якорей известны. Предполагается, что веревки не имеют веса и могут быть натянуты в любом направлении. Рисунок 2 показывает максимальную высоту воздушного шара для ситуации, изображенной на Рисунке 1.
Рисунок 2: Максимальная высота воздушного шара
Входные данные
Входные данные состоят из нескольких наборов, каждый из которых имеет следующий формат.
n
x_1 y_1 l_1
...
x_n y_n l_n
Первая строка каждого набора данных содержит целое число n (1 ≤ n ≤ 10), обозначающее количество веревок. Каждая из следующих n строк содержит три целых числа: x_i, y_i и l_i, разделенные пробелом. P_i = (x_i, y_i) — это координаты якоря, к которому прикреплена i-я веревка, а l_i — длина этой веревки. Предполагается, что −100 ≤ x_i ≤ 100, −100 ≤ y_i ≤ 100, и 1 ≤ l_i ≤ 300. Воздушный шар изначально находится в точке (0, 0) на земле. Размер воздушного шара и якорей можно игнорировать.
Предполагается, что P_i и P_j — это разные точки, если i ≠ j. Также предполагается, что расстояние от P_i до (0, 0) не превышает l_i−1. Это гарантирует, что воздушный шар может подняться как минимум на 1 единицу в высоту.
Рисунки 1 и 2 соответствуют первому набору данных в примере входных данных ниже.
Конец ввода обозначается строкой, содержащей ноль.
Выходные данные
Для каждого набора данных выведите одну строку с максимальной высотой, на которую может подняться воздушный шар. Погрешность результата не должна превышать 0.00001. В выводе не должно быть лишних символов.