브라우니 포인트 II

시간 제한1초메모리 제한128 MB

문제

Stan과 Ollie가 '홀수 브라우니 포인트' 게임을 한다. 평면 위 정수 좌표에 여러 개의 브라우니 포인트가 놓여 있다.

Stan이 먼저 수직선 하나를 긋는다. 이 수직선은 반드시 어떤 브라우니 포인트를 지나야 한다(즉 그 선의 $x$좌표는 어떤 포인트의 $x$좌표와 같아야 하며, 같은 $x$좌표를 가진 여러 포인트를 동시에 지날 수도 있다). 이어서 Ollie가 수평선 하나를 긋는데, 이 수평선은 Stan의 수직선 위에 이미 놓여 있는 브라우니 포인트 중 하나를 반드시 지나야 한다.

두 직선은 평면을 네 개의 사분면으로 나눈다. 좌표가 양의 방향으로 얼마든지 커질 수 있는 사분면을 오른쪽 위 사분면이라 하자. 어떤 브라우니 포인트가 두 직선 중 하나 위에 정확히 놓이면 그 포인트는 지나간 것으로 간주되어 누구의 점수에도 포함되지 않는다.

  • Stan은 오른쪽 위 또는 왼쪽 아래 사분면에 있는, 지나가지 않은 브라우니 포인트 하나마다 1점을 얻는다.
  • Ollie는 왼쪽 위 또는 오른쪽 아래 사분면에 있는, 지나가지 않은 브라우니 포인트 하나마다 1점을 얻는다.

두 사람 모두 자신의 점수를 최대로 만들려고 한다. 먼저 두는 Stan은 Ollie의 대응을 미리 고려하여, 자신이 확실히 보장받을 수 있는 최소 점수가 가장 커지도록 수직선을 선택한다.

입력

입력은 여러 개의 테스트 케이스로 이루어진다. 각 테스트 케이스의 첫 줄에는 브라우니 포인트의 개수인 홀수 $n$ ($1 < n < 200000$)이 주어진다. 이어지는 $n$개의 줄에는 각각 한 브라우니 포인트의 좌표를 나타내는 두 정수 $x$, $y$ ($-50000 \le x, y \le 50000$)가 주어진다. 같은 위치에 놓인 두 포인트는 없다. 입력의 끝은 $0$ 하나만 있는 줄로 표시된다.

출력

각 테스트 케이스마다 한 줄을 출력한다. 먼저 Stan이 스스로 보장할 수 있는 최대 점수를 출력한다. 그다음, 그 보장 점수를 달성하는 모든 수직선에 대해 Ollie가 최선으로 대응했을 때 얻을 수 있는 서로 다른 점수들을 오름차순으로 출력한다. 출력 형식은 정확히 다음과 같다.

Stan: S; Ollie: o1 o2 ... ok;