그리고, 몇 개나 있을까?

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

문제

솔로 플레이 게임을 만드는 유명한 제작자 솔리타리우스(Solitarius) 씨는 거의 매일 새로운 아이디어를 떠올린다. 그의 최신 게임에는 색과 크기가 제각각인 원판이 쓰인다.

게임을 시작할 때, 모든 원판은 탁자 중앙 부근에 무작위로 흩어져 있다. 게임을 진행하는 동안, 위에 아무 원판도 얹혀 있지 않은 같은 색 원판 두 개를 골라 함께 없앨 수 있다. 단, 두 원판이 서로 바깥쪽에서 접하기만 하는 경우에는 한쪽이 다른 쪽 위에 얹혀 있다고 보지 않는다.

탁자 위의 원판 일곱 개

예를 들어 위 그림에서는 먼저 검은색 원판 두 개를 없앨 수 있고, 그러고 나면 흰색 원판 두 개를 없앨 수 있게 된다. 반면 회색 원판 두 개는 끝내 없앨 수 없다.

원판들의 색, 크기, 처음 놓인 위치가 주어질 때, 없앨 수 있는 원판의 최대 개수를 구하는 프로그램을 작성하라.

입력

입력은 여러 개의 데이터셋으로 이루어진다. 각 데이터셋은 원판을 모두 흩뿌린 직후의 게임 상태를 다음 형식으로 나타낸다.

n
x1 y1 r1 c1
x2 y2 r2 c2
...
xn yn rn cn

첫 줄에는 원판의 개수를 나타내는 양의 정수 $n$이 주어진다. 이어지는 $n$개의 줄에는 각각 공백으로 구분된 정수 네 개가 주어지며, 하나의 원판을 나타낸다.

  • $(x_i, y_i)$는 $i$번째 원판의 중심 좌표, $r_i$는 반지름, $c_i$는 색 번호이다.
  • $i$번째 원판이 $j$번째 원판 위에 얹혀 있을 때에는 항상 $i < j$가 성립한다.

색 번호는 모두 $1$ 이상 $4$ 이하의 정수이며, 한 데이터셋에서 같은 색인 원판은 많아야 $6$개이다. 모든 중심 좌표는 $0$ 이상 $100$ 이하, 모든 반지름은 $1$ 이상 $100$ 이하이다.

입력의 끝은 $0$ 하나만 있는 줄로 나타낸다.

출력

각 데이터셋마다, 없앨 수 있는 원판의 최대 개수를 정수 하나로 한 줄에 출력한다.