학생 수가 줄어드는 가운데 신입생을 끌어모으려고 한 유치원이 특대형 이진 모빌 만들기에 나섰다. 모빌은 나무 막대, 구슬, 그리고 이 둘을 잇는 실로만 이루어진다.
원장 선생님은 완성한 모빌을 걸 자리를 마련해야 하는데 모빌이 얼마나 넓게 퍼질지 모른다. 막대와 구슬의 연결 상태, 각 막대의 길이, 각 구슬의 무게가 주어질 때 완성된 모빌의 가로 폭을 구하라. 가로 폭은 모빌이 닿는 X좌표의 최댓값에서 최솟값을 뺀 값이다.
첫 줄에 테스트 케이스의 수 T가 주어진다.
각 테스트 케이스의 첫 줄에 나무 막대의 수 n (1≤n≤100,000)이 주어진다. 이어지는 n개의 줄 가운데 i번째 줄에는 i번 막대의 길이 len (1≤len≤1,000)과, 왼쪽 끝과 오른쪽 끝에 매달린 물체를 나타내는 두 정수 l, r이 공백으로 구분되어 주어진다.
−n≤l≤−1이면 왼쪽 끝에 −l번 막대가 매달려 있다는 뜻이고, 1≤l≤100,000이면 왼쪽 끝에 무게가 l인 구슬이 매달려 있다는 뜻이다. r는 오른쪽 끝을 가리킨다는 점만 다를 뿐 l과 같은 방식으로 읽으면 된다.
모든 막대는 1번 막대를 뿌리로 하는 하나의 연결된 구조에 속하고, 2번부터 n번까지의 막대는 각각 정확히 한 번씩 다른 막대의 끝에 매달린다.
각 테스트 케이스마다 한 줄에 모빌의 가로 폭을 출력한다. 소수점 아래 여섯 자리까지 반올림해 적고, 자리가 비면 0으로 채운다. 폭이 정확히 5라면 5.000000으로 출력한다.
막대가 수평을 유지하려면 실을 매단 지점을 기준으로 양쪽 토크가 같아야 한다. 길이가 len인 막대의 왼쪽에 걸린 무게를 Wl, 오른쪽에 걸린 무게를 Wr라 하면 매단 지점에서 왼쪽 끝까지의 거리는 Wl+Wrlen×Wr, 오른쪽 끝까지의 거리는 Wl+Wrlen×Wl이다.
막대에 걸린 무게는 그 막대 아래에 매달린 모든 구슬의 무게를 더한 값이다. 막대와 실은 무게가 0이므로 더하지 않는다.