마라톤

서로 다른 좌표에 있는 무리가 크기에 반비례하는 속도로 오른쪽으로 달리다 만나면 합쳐진다. 더 이상 합쳐지지 않을 때까지 시뮬레이션한 뒤 최종 무리의 크기를 왼쪽부터 출력한다.

보통6스택시뮬레이션정렬구현면접 대비아직 제출이 없습니다시간 제한0.2초메모리 제한256 MB

문제

장거리 달리기를 시작했다. 선수들이 달리는 도로는 곧게 뻗은 무한한 직선이라고 하자. 어느 순간 선수들은 nn개의 그룹으로 나뉘었다. ii번 그룹은 kik_i명으로 이루어져 있고 좌표 xix_i에 있다. DD명으로 이루어진 그룹은 좌표가 커지는 방향으로 속력 100D\frac{100}{D}로 달린다. 인원이 많은 그룹일수록 느리다.

어떤 그룹이 바로 앞 그룹을 따라잡으면 두 그룹은 즉시 하나로 합쳐진다. 합쳐진 그룹의 인원은 두 그룹의 인원을 더한 값이고, 속력도 새 인원에 맞게 바뀐다. 세 그룹 이상이 같은 순간에 합쳐지기도 한다.

도로가 무한하므로 어느 순간부터는 더 이상 합쳐지지 않는다. 마지막에 남는 그룹의 개수와 각 그룹의 인원을 구하시오.

입력

첫째 줄에 정수 nn이 주어진다 (1n1051 \le n \le 10^5). 다음 nn개 줄에는 그룹 하나의 인원 kik_i와 좌표 xix_i가 주어진다 (1ki1001 \le k_i \le 100, xix_i는 소수점 아래 최대 세 자리까지 주어지는 실수이고 xi104|x_i| \le 10^4). 모든 좌표는 서로 다르고, 그룹은 순서와 상관없이 주어진다.

출력

첫째 줄에 남은 그룹의 개수 mm을 출력한다. 둘째 줄에 남은 그룹의 인원을 많은 것부터 적은 것 순으로, 즉 증가하지 않는 순서로 공백 하나씩 두고 출력한다. 합쳐질 그룹이 더 없는 상태에서는 뒤에 있는 그룹의 인원이 앞 그룹보다 적지 않으므로, 이 순서는 좌표가 작은 그룹부터 큰 그룹까지 늘어놓은 순서와 같다.