야구 관람
시간 제한8초메모리 제한512 MB
A번의 X 승리, B번의 Y 승리, C번의 무승부로 이루어진 A+B+C경기에서 X의 총 득점이 SX, Y의 총 득점이 SY가 되는 경기 순서쌍의 수를 1,000,000,007로 나눈 나머지를 구한다.
문제
얼마 전, 당신의 경쟁 프로그래밍 동료인 O씨는 야구를 보러 갔다. 관람한 경기는 팀 X와 팀 Y의 총 4경기 대결이었는데, 일방적인 양상으로 흘러가 모든 경기에서 팀 X가 승리했다. 게다가 4경기 전체에서 X의 총 득점은 33점이었던 반면, Y의 총 득점은 고작 4점이었다.
너무나 일방적인 내용이라 경기 내용에 흥미를 잃은 O씨는 경기를 보는 동안에도 경쟁 프로그래밍 문제 아이디어를 떠올리고 있었다. 그 덕분에 O씨는 다음과 같은 문제를 생각해냈다.
야구팀 X와 Y가 대결해서 X가 승리한 경기 수, Y가 승리한 경기 수, 무승부 경기 수가 각각 A, B, C경기였다고 하자. 또한 전체 A+B+C경기에서 X, Y의 총 득점은 각각 SX점, SY점이었다고 하자. 득점은 모두 0 이상의 정수이다. X와 Y가 총 A+B+C경기 대결했을 때, 전체 경기의 결과로 이 조건을 만족하는 각 경기의 점수 나열은 몇 가지나 있을까?
여기서 어떤 경기에서 승리하는 조건은 그 경기에서의 득점이 상대 팀의 득점보다 많은 것이고, 같으면 무승부가 된다.
또한 각 경기의 점수 나열을 구할 때, 대결한 전체 경기의 결과를 비교했을 때 X와 Y의 점수 조합이 같더라도 그 순서가 다르면 구별해야 한다. 예를 들어, X와 Y가 2경기 대결한 결과 둘 다 1승씩 하고 무승부가 없으며 X와 Y의 총 득점이 모두 1점씩이었다고 하자. 이 경우 각 경기에서의 X, Y의 득점을 (X의 득점) - (Y의 득점)이라는 표기로 나타내고 총 2경기의 결과를 나열하면, 다음 2가지가 주어진 조건을 만족한다.
- 1 - 0, 0 - 1
- 0 - 1, 1 - 0
경기의 순서를 구별해서 세므로 이들은 구별된다.
당신에게는 이 답을 구하는 프로그램을 만들어 달라고 부탁한다. 다만 구하는 수는 매우 커질 수 있으므로, 구하는 수를 1,000,000,007로 나눈 나머지를 답하도록 해 달라고 한다.
입력
입력은 여러 데이터 세트로 이루어진다. 각 데이터 세트는 1줄로 되어 있고, 다음 형식으로 나타낸다.
A B C SX SY
여기서 A는 팀 X의 승리 수, B는 팀 Y의 승리 수, C는 무승부 경기 수, SX는 팀 X의 총 득점, SY는 팀 Y의 총 득점을 나타낸다. A, B, C, SX, SY는 모두 0 이상 1,000,000 이하의 정수이고, 0 < A+B+C를 만족한다.
입력의 끝은 5개의 0으로 이루어진 줄로 나타낸다.
출력
각 데이터 세트에 대해 주어진 조건을 만족하는 경우의 수를 1,000,000,007로 나눈 나머지만으로 이루어진 줄을 1줄에 출력하라.