믿을 수 없어! 불가능해!

아직 제출이 없습니다시간 제한2초메모리 제한64 MB

문제

"n×mn \times m 직사각형 표의 각 열과 각 행의 합을 알려 줘." 알렉스가 말했다. "그러면 그런 표가 존재하는지 알려 줄게. 약간의 수고비만 주면 그런 표의 예시도 하나 만들어 줄 수 있어."

"믿을 수 없어! 불가능해!" 반 친구들이 외쳤다. "저렇게 많은 숫자를! 넌 진짜 천재구나!"

하지만 바실은 알렉스가 학교에서 가장 유명한 사람이 되는 것이 마음에 들지 않는다.

  • "들어 봐! 내가, 바실이 최고야! n×mn \times m 직사각형 표와 그 행의 합, 열의 합을 주면, 그 조건을 만족하는 음이 아닌 정수 표가 몇 개나 되는지 말해 줄게."
  • "허풍이야! n×3n \times 3짜리도 못 할 거라는 데 5달러 걸겠어." 알렉스가 말한다.
  • "할 수 있다는 데 5달러 걸지!" 바실이 답한다.

대회는 내일이다. 알렉스는 n×3n \times 3 크기의 표를 만들고, 바실에게는 표의 크기와 행·열의 합만 알려 줄 것이다. 모두가 누가 이길지 내기를 걸고 있다!

너는 알렉스의 친구다. 알렉스는 바실을 위해 어려운 테스트 데이터를 만들고 싶어서 답을 직접 계산할 방법이 필요하다. 알렉스는 이런 문제를 풀지 못하므로, 너에게 프로그램을 작성해 달라고 부탁했다.

n×3n \times 3 표의 세 열의 합 c1c_1, c2c_2, c3c_3nn개의 행의 합 r1,r2,,rnr_1, r_2, \dots, r_n이 주어진다. 각 열의 합이 c1,c2,c3c_1, c_2, c_3이고 각 행의 합이 r1,r2,,rnr_1, r_2, \dots, r_n인, 음이 아닌 정수로 채워진 표의 개수를 세어라. 그 개수는 매우 커질 수 있으므로, 마지막 17자리, 즉 개수를 101710^{17}으로 나눈 나머지만 출력하라.

입력

첫째 줄에 네 정수 nn, c1c_1, c2c_2, c3c_3이 주어진다. nn은 행의 개수이고, c1c_1, c2c_2, c3c_3은 세 열의 합이다.

이어서 nn개의 정수 r1,r2,,rnr_1, r_2, \dots, r_n(각 행의 합)이 주어지며, 한 줄 또는 여러 줄에 걸쳐 주어질 수 있다.

모든 값(nn, 각 열의 합, 각 행의 합)은 125125 이하의 음이 아닌 정수이다.

출력

유효한 표의 개수를 101710^{17}으로 나눈 나머지를 한 줄에 출력한다.