"n×m 직사각형 표의 각 열과 각 행의 합을 알려 줘." 알렉스가 말했다. "그러면 그런 표가 존재하는지 알려 줄게. 약간의 수고비만 주면 그런 표의 예시도 하나 만들어 줄 수 있어."
"믿을 수 없어! 불가능해!" 반 친구들이 외쳤다. "저렇게 많은 숫자를! 넌 진짜 천재구나!"
하지만 바실은 알렉스가 학교에서 가장 유명한 사람이 되는 것이 마음에 들지 않는다.
대회는 내일이다. 알렉스는 n×3 크기의 표를 만들고, 바실에게는 표의 크기와 행·열의 합만 알려 줄 것이다. 모두가 누가 이길지 내기를 걸고 있다!
너는 알렉스의 친구다. 알렉스는 바실을 위해 어려운 테스트 데이터를 만들고 싶어서 답을 직접 계산할 방법이 필요하다. 알렉스는 이런 문제를 풀지 못하므로, 너에게 프로그램을 작성해 달라고 부탁했다.
n×3 표의 세 열의 합 c1, c2, c3과 n개의 행의 합 r1,r2,…,rn이 주어진다. 각 열의 합이 c1,c2,c3이고 각 행의 합이 r1,r2,…,rn인, 음이 아닌 정수로 채워진 표의 개수를 세어라. 그 개수는 매우 커질 수 있으므로, 마지막 17자리, 즉 개수를 1017으로 나눈 나머지만 출력하라.
첫째 줄에 네 정수 n, c1, c2, c3이 주어진다. n은 행의 개수이고, c1, c2, c3은 세 열의 합이다.
이어서 n개의 정수 r1,r2,…,rn(각 행의 합)이 주어지며, 한 줄 또는 여러 줄에 걸쳐 주어질 수 있다.
모든 값(n, 각 열의 합, 각 행의 합)은 125 이하의 음이 아닌 정수이다.
유효한 표의 개수를 1017으로 나눈 나머지를 한 줄에 출력한다.