막대 놀이

길이별 막대 개수가 주어질 때, 각 막대를 최대 한 번 사용해 만들 수 있는 직사각형 개수의 최댓값을 구한다.

보통4그리디정렬면접 대비아직 제출이 없습니다시간 제한2초메모리 제한512 MB

문제

색깔 있는 작은 막대로 하는 놀이는 여러 가지가 있다. 이 문제에서 다루는 놀이는 막대로 직사각형을 만드는 것이다. 길이가 여러 가지인 막대 집합을 받아 바닥에 직사각형을 그리는데, 막대를 직사각형의 변으로 쓴다. 막대 하나는 직사각형 하나에만 쓸 수 있고, 직사각형의 한 변은 막대 하나로 이룬다. 아이 두 명이 똑같은 막대 집합을 하나씩 받고, 직사각형을 더 많이 그린 아이가 이긴다.

네 변의 길이가 같은 정사각형도 직사각형으로 센다.

길이가 정수인 막대 집합이 주어질 때, 그릴 수 있는 직사각형의 최대 개수를 구하는 프로그램을 작성하라.

입력

입력은 여러 테스트 케이스로 이루어진다. 각 테스트 케이스의 첫 줄에는 집합에 들어 있는 서로 다른 막대 길이의 개수 NN이 주어진다 (1N10001 \le N \le 1000). 이어지는 NN개의 줄에는 각각 정수 두 개 CiC_iViV_i가 주어진다. CiC_i는 막대의 길이이고 (1Ci100001 \le C_i \le 10000), ViV_i는 그 길이인 막대의 개수다 (1Vi10001 \le V_i \le 1000). 한 테스트 케이스에서 같은 길이는 두 번 나오지 않으므로 CiC_i는 모두 다르다. 입력의 마지막 줄은 N=0N = 0이며, 이 줄은 처리하지 않는다.

출력

각 테스트 케이스마다 그 막대 집합으로 만들 수 있는 직사각형의 최대 개수를 한 줄에 하나씩 출력하라.