선수들이 세트 사이에 쉬는 동안 방송국은 지루한 광고를 내보낸다. Zvonko는 TV의 텔레텍스트 기능을 켜고 축구 리그의 최신 점수와 순위를 살펴보다가, 늘 그렇듯 예리하게 새로운 수학 게임을 하나 생각해 냈다.
순위표에는 각 팀에 대해 다섯 가지 수치가 있다: 치른 경기의 총 수, 그중 이긴 경기 수, 비긴 경기 수, 진 경기 수, 그리고 획득한 승점이다. 팀은 승리마다 승점 \(3\)점, 무승부마다 승점 \(1\)점을 얻는다.
Zvonko는 일부 칸의 값을 다른 칸들로부터 알아낼 수 있다는 것을 알아차렸다. 일부 칸의 값을 알 수 없는 순위표를 입력받아 빠진 칸을 채우는 프로그램을 작성하시오.
서로 다른 팀의 데이터는 관련이 없다. 예를 들어, 순위표에 모든 팀이 모든 경기를 이겼다고 적혀 있을 수도 있다(실제 리그에서는 불가능하겠지만).
각 팀은 최대 \(100\)경기를 치렀다(이 값이 빠진 칸일 수도 있다).
첫째 줄에 리그의 팀 수인 정수 \(N\) (\(1 \le N \le 50\,000\))이 주어진다.
다음 \(N\)개의 줄에는 한 팀의 \(5\)개 칸이 공백 하나로 구분되어 주어진다. 문제 설명에 나온 다섯 가지 데이터이다. 각 칸에는 정수(0 이상)가 있거나, 값을 알 수 없는 경우 문자 ?(물음표)가 있다.
입력은 모순이 없으며, 빠진 칸의 값을 결정하는 방법은 유일하다.
빠진 칸을 채운 순위표를 출력한다.
참고: 각 테스트 케이스에서, 올바르게 해결한 팀의 수에 선형으로 비례하는 점수를 내림하여 받는다. 시간 제한을 초과하거나 다른 오류가 발생하면 해당 테스트 케이스의 점수는 0점이다.
| 서브태스크 | 점수 | 설명 |
|---|---|---|
Subtask 1 | 55점 |
5
27 21 3 3 66
27 18 6 3 ?
? 15 5 7 50
? 14 7 5 ?
? 14 ? 8 4727 21 3 3 66
27 18 6 3 60
27 15 5 7 50
26 14 7 5 49
27 14 5 8 47