점프

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

문제

"점프"는 양쪽으로 끝없이 이어지는 칸들로 이루어진 띠 위에서 하는 보드 게임이다. 칸 위에는 유한개의 말이 놓여 있으며, 한 칸에 말이 여러 개 놓일 수도 있다. 말이 놓인 가장 왼쪽 칸의 번호를 0으로 정한다. 오른쪽 칸들은 차례로 1, 2, 3, ... 으로, 왼쪽 칸들은 -1, -2, -3, ... 으로 번호를 매긴다. 하나의 배치는 말이 놓인 각 칸에 대해 그 칸의 번호와 그 칸에 놓인 말의 개수를 적어서 나타낸다.

배치를 바꾸는 이동에는 두 종류가 있다.

  • 오른쪽 점프:pp에서 말 한 개와 칸 p+1p+1에서 말 한 개를 없앤 뒤, 칸 p+2p+2에 말 한 개를 놓는다.
  • 왼쪽 점프:p+2p+2에서 말 한 개를 없앤 뒤, 칸 p+1p+1과 칸 pp에 각각 말 한 개씩을 놓는다.

이웃한 두 칸에 놓인 말의 개수의 합이 항상 1개 이하이면 그 배치를 최종 배치라고 한다. 어떤 배치에서 시작하더라도 유한 번의 이동을 거치면 항상 유일한 최종 배치에 도달한다.

처음 배치가 주어질 때, 그로부터 도달하는 최종 배치를 구하는 프로그램을 작성하여라.

입력

첫째 줄에 정수 nn (1n100001 \le n \le 10000)이 주어진다. 이는 처음 배치에서 말이 놓인 칸의 개수이다.

다음 nn개의 줄에는 각각 말이 놓인 칸 하나에 대한 정보가 정수 두 개로 주어진다. 첫 번째 수는 칸의 번호, 두 번째 수는 그 칸에 놓인 말의 개수이다. 칸들은 번호가 증가하는 순서로 주어진다. 모든 칸의 번호는 1000010000 이하이고, 한 칸에 놓인 말의 개수는 10810^8 이하이다.

출력

최종 배치에서 말이 놓인 칸들의 번호를 증가하는 순서로, 공백 하나로 구분하여 한 줄에 출력한다.