구멍 난 도로

아직 제출이 없습니다시간 제한2초메모리 제한256 MB

문제

상태가 아주 나쁜 도로에서 작은 무선 조종 자동차를 몰고 있다. 도로에는 구멍이 가득하다. 구멍에 빠지면 자동차가 고칠 수 없을 만큼 망가지므로 구멍 위를 지나갈 수 없다. 도로 밖으로 나가는 것도 안 된다. 도로를 둘러싼 긴 풀숲에 들어가면 자동차를 영영 찾을 수 없다.

자동차는 아주 작아서 크기가 없는 점으로 본다. 도로는 폭이 WW미터, 길이가 LL미터이고 yy축과 나란히 놓여 있다. 자동차는 (W/2,0)(W/2, 0)에서 출발해 (W/2,L)(W/2, L)까지 가야 한다. 구멍은 모두 완전한 원 모양이고, 서로 겹치거나 닿지 않으며 도로의 가장자리와도 닿지 않는다. 구멍의 경계를 스치듯 지나가는 것은 허용한다.

구멍을 피해 도착점까지 가는 가장 짧은 경로의 길이를 구하라.

입력

첫 줄에 테스트 케이스의 개수 TT가 주어진다.

각 테스트 케이스의 첫 줄에는 구멍의 개수 NN, 도로의 폭 WW, 도로의 길이 LL이 정수로 주어진다. 이어지는 NN개의 줄에는 구멍 하나를 나타내는 세 정수 xix_i, yiy_i, rir_i가 주어진다. 중심이 (xi,yi)(x_i, y_i)이고 반지름이 rir_i인 원이라는 뜻이다.

  • 0<T1000 < T \le 100
  • 0N1000 \le N \le 100
  • 0<L10000 < L \le 1000
  • 0<W1000 < W \le 100
  • ri<xi<Wrir_i < x_i < W - r_i
  • ri<yi<Lrir_i < y_i < L - r_i
  • 0<ri<min(W/2,L/2)0 < r_i < \min(\lfloor W/2 \rfloor, \lfloor L/2 \rfloor)

출력

각 테스트 케이스마다 구멍을 피해 출발점에서 도착점까지 가는 가장 짧은 경로의 길이를 한 줄에 출력한다. 소수점 아래 여섯째 자리까지 반올림해 출력한다.