물풍선 아티스트 마리드를 기억하는가? 마리드는 다음 작품을 위해 총 개의 물풍선을 2차원 격자판에 설치했다. 이때 번째 물풍선은 칸에 세기 로 설치되어 있다. 설치된 물풍선의 위치는 모두 다르다.
물풍선이 터지면 물풍선의 세기만큼 십자모양으로 물줄기를 발사한다. 다시 말해, 가로 방향으로는 , , , , 에 해당하는 칸에 물줄기가 닿게 되며, 세로방향으로는 , , , , 에 해당하는 칸에 물줄기가 닿게 된다. 물론, 에도 물줄기가 닿게 된다. 만약 이 물줄기가 다른 물풍선이 있는 칸에 닿는다면 그 물풍선 또한 터지며, 이로 인해 연쇄적인 물풍선 폭발이 일어날 수도 있다. 단, 각각의 물줄기가 닿는 범위는 독립적이며 그 과정에서 터지는 다른 물폭탄의 영향을 받지 않는다. 즉, 물풍선이 중첩된다고 세기가 커지는 것은 아니다.
그런데 이때 문제가 발생했다. 설치된 물풍선들의 세기 를 모두 잊어버린 것이다! 마리드는 물풍선 애널리스트 모스에게 의뢰해서 다음과 같은 정보를 얻었다.
모스는 유능한 물풍선 애널리스트이기 때문에, 모스의 정보가 틀렸을 가능성은 없다. 다시 말해, 를 모두 만족하는 물풍선 세기 의 조합의 존재함이 보장된다.
설치되어 있는 개의 물풍선 위치와 모스의 정보가 주어질 때, 이를 만족하는 물풍선 세기의 조합을 구하는 프로그램을 작성하시오.
첫 줄에 설치된 물풍선의 수를 나타내는 정수 이 주어진다. ()
이어지는 줄의 번째 줄에 번째 물풍선의 위치와 모스의 정보를 나타내는 정수 , , 가 공백으로 구분되어 주어진다. (; )
주어지는 물풍선의 위치는 서로 다르다.
번째 줄에 번째 물풍선의 세기를 나타내는 를 출력한다. ()
주어진 를 모두 만족하며, 출력 형식 또한 만족하는 의 조합의 존재함이 보장된다. 만약 답이 여러 가지인 경우, 그중 아무거나 하나 출력한다.
4 1 1 1 5 1 0 5 3 0 1 3 1
4 2 2 2
입력 예제의 경우 주어진 출력 예제 외에도 가능한 올바른 출력들이 더 존재할 수 있으며, 그 중 어느 것을 출력해도 된다.
입력 케이스들은 다음과 같은 종류로 구별되며, 한 종류의 케이스를 다 맞혀야 그 종류에 배정된 점수를 받을 수 있다.
종류 1: 13점
종류 2: 31점
종류 3: 56점
추가적인 제한 조건이 없음.