선거 운동을 시작하려면 돈이 필요합니다. 그렇지 않으면 성가신 로보콜, 상대 후보를 겨냥한 비방성 TV 광고, 유세 기간 내내 입어야 할 정장 값을 어떻게 치르겠습니까? 자금을 모으는 방법에는 전통적인 후원, 인터넷 광고, 값비싼 모금 만찬 등 여러 가지가 있습니다.
선거 후원금은 (안타깝게도 종종 정당하게) 후보에 대한 영향력을 사는 행위로 여겨질 수 있으므로, 선거 자금법은 한 사람이 후보나 정당에 낼 수 있는 후원금 총액에 제한을 둡니다. 이 법에 따르면 개인은 한 후보에게 최대 $2100까지, 그리고 전체적으로 최대 $40000까지 후원할 수 있습니다. 그러나 후원금이 여러 건의 거래로 나뉘면 누가 얼마를 후원했는지 정확히 파악하기 어렵습니다.
개별 후원 내역을 순서대로 입력받아 한도를 위반한 경우가 있는지, 있다면 어떤 후원자가 위반했는지 찾아내는 프로그램을 작성하세요.
첫 줄에는 데이터 집합의 개수를 나타내는 정수 $K \ge 1$이 주어집니다. 이어서 다음 형식의 데이터 집합이 $K$개 주어집니다.
각 데이터 집합의 첫 줄에는 세 정수 $c$, $d$, $t$가 주어지며, $1 \le c \le 100$, $1 \le d \le 1000$, $1 \le t \le 100000$입니다. 여기서 $c$는 후보의 수(번호 $1, \dots, c$), $d$는 후원자의 수(번호 $1, \dots, d$), $t$는 거래의 수입니다.
그 뒤로 $t$개의 줄이 이어지며, 각 줄에는 세 정수 $d_i$, $c_i$, $m_i$가 주어집니다. 이는 거래 $i$에서 후원자 $d_i$가 후보 $c_i$에게 $m_i$달러를 후원했다는 뜻입니다. 같은 후원자-후보 쌍이 여러 번 나올 수 있습니다.
각 데이터 집합마다 먼저 Data Set x:를 한 줄에 출력합니다. 여기서 $x$는 데이터 집합의 번호입니다. 그다음, 위반이 없으면 No violations를 한 줄에 출력하고, 위반이 있으면 Violators:를 한 줄에 출력한 뒤 한도를 하나라도 어긴 모든 후원자를 후원자 번호가 커지는 순서로 한 줄에 하나씩 출력합니다.
어떤 후원자가 한 후보에게 후원한 금액의 합이 $2100을 초과하거나, 모든 후보에게 후원한 금액의 총합이 $40000을 초과하면 그 후원자는 위반자입니다.