Edward 是 Aluminum Cyclic Machinery 的一名工人。他的工作是操作机械臂切割出设计的模型。以下是对他工作的简要介绍。
假设操作平面为一个二维坐标系。起初,有一个圆心坐标为 $(0, 0)$ 且半径为 $R$ 的圆盘。随后,有 $m$ 个机械臂同时切割并擦除其影响范围内的所有区域,其中第 $i$ 个影响区域是一个圆心坐标为 $(x_i, y_i)$ 且半径为 $r_i$ 的圆($i = 1, 2, \dots, m$)。为了获得理想的模型,题目保证任意两个切割区域之间没有交集,且没有任何切割区域包含整个圆盘。
你的任务是确定圆盘剩余区域的周长,不包括内部周长。
下图为样例的示意图,其中红色曲线被计入周长,而绿色曲线则不计入。
输入格式
第一行包含一个整数 $T$,表示测试用例的数量。
接下来描述所有测试用例。对于每个测试用例:
第一行包含两个整数 $m$ 和 $R$。
接下来的 $m$ 行中,第 $i$ 行包含三个整数 $x_i, y_i$ 和 $r_i$,表示一个切割区域。
$1 \le T \le 1000, 1 \le m \le 100, -1000 \le x_i, y_i \le 1000, 1 \le R, r_i \le 1000$ ($i = 1, 2, \dots, m$)。
输出格式
对于每个测试用例,输出一行,表示剩余区域的周长。如果你的答案的绝对误差或相对误差不超过 $10^{-6}$,则被视为正确。
形式化地,设你的答案为 $a$,标准答案为 $b$。如果满足 $\frac{|a-b|}{\max(1,|b|)} \le 10^{-6}$,则你的答案被视为正确。
样例
输入 1
1 4 10 6 3 5 10 -4 3 -2 -4 4 0 9 1
输出 1
81.62198908430238475376