두 바퀴 버기

두 바퀴 차량이 N개의 시간별 바퀴 속도 명령을 따라 움직일 때 차축 중심의 최종 위치를 소수점 다섯 자리까지 계산한다.

보통5기하시뮬레이션수학아직 제출이 없습니다시간 제한8초메모리 제한512 MB

문제

자동차 회사 International Car Production Company(ICPC)가 새 탈것 Two-Wheel Buggy를 개발하고 있다. 이름 그대로 바퀴가 두 개뿐인 탈것이다. 버기는 왼쪽 바퀴, 오른쪽 바퀴, 그리고 두 바퀴를 잇는 막대인 차축으로 이루어진다.


그림 1: 버기의 기본 구조

시제품을 만들기 전에 회사는 컴퓨터 시뮬레이션을 돌리기로 했다. 시뮬레이션의 규칙은 다음과 같다.

버기는 x-y 평면 위를 움직인다. 차축의 중심에서 각 바퀴까지의 거리를 DD라고 하자. 시뮬레이션이 시작할 때 차축의 중심은 (0,0)(0, 0), 왼쪽 바퀴는 (D,0)(-D, 0), 오른쪽 바퀴는 (D,0)(D, 0)에 있고, 버기는 yy축의 양의 방향을 향한다. 두 바퀴의 반지름은 모두 1이다.


그림 2: 버기의 초기 위치

버기의 움직임은 명령의 나열로 조종한다. 명령 하나는 LspeedLspeed, RspeedRspeed, timetime 세 수로 이루어진다. LspeedLspeedRspeedRspeed는 각각 왼쪽 바퀴와 오른쪽 바퀴의 회전 속도이고 단위는 초당 각도이며, timetime은 두 바퀴가 그 속도를 유지하는 시간을 초 단위로 나타낸다. 속도가 양수이면 바퀴는 버기를 앞으로 나아가게 하는 방향으로 돌고, 음수이면 반대 방향으로 돈다. 예를 들어 LspeedLspeed360-360으로 두면 왼쪽 바퀴는 버기를 뒤로 물러나게 하는 방향으로 1초에 한 바퀴 돈다. LspeedLspeedRspeedRspeed를 다르게 둘 수 있고, 그러면 버기가 왼쪽이나 오른쪽으로 꺾인다. 한쪽을 양수로, 다른 쪽을 음수로 둘 수도 있다. 이때 버기는 회전한다.


그림 3: 움직임의 예

명령의 나열이 주어질 때 버기의 최종 위치를 구하는 프로그램을 작성하라. 바퀴의 두께는 없고, 바퀴는 절대 미끄러지지 않는다고 가정한다.

입력

입력은 여러 데이터 집합으로 이루어진다. 각 데이터 집합의 형식은 다음과 같다.

N D
Lspeed_1 Rspeed_1 time_1
...
Lspeed_N Rspeed_N time_N

데이터 집합의 첫 줄에는 양의 정수 NNDD가 주어진다 (1N1001 \le N \le 100, 1D101 \le D \le 10). NN은 명령의 개수이고, DD는 차축의 중심에서 각 바퀴까지의 거리다. 이어지는 NN개의 줄에는 ii번째 명령을 나타내는 정수 LspeediLspeed_i, RspeediRspeed_i, timeitime_i가 주어진다 (360Lspeedi,Rspeedi360-360 \le Lspeed_i, Rspeed_i \le 360, 1timei1 \le time_i). 한 데이터 집합에서 timeitime_i의 합은 500 이하다.

두 개의 0으로 이루어진 줄이 입력의 끝을 알린다. 이 줄은 데이터 집합이 아니므로 처리하지 않는다.

출력

각 데이터 집합마다 차축 중심의 최종 위치를 두 줄에 출력한다. 첫 줄에 x좌표를, 둘째 줄에 y좌표를 출력한다. 두 좌표 모두 소수점 아래 다섯째 자리까지 반올림해 출력한다. 반올림한 값이 0이면 -0.00000이 아니라 0.00000을 출력한다. 그 밖의 문자는 출력하지 않는다.