NUMPATHS
Bản đồ thành phố \(XYZ\) được biểu diễn dưới dạng hệ tọa độ \(Oxy\). Mỗi địa điểm trong thành phố là một điểm nguyên trên bản đồ. Người ta xây dựng các con đường theo nguyên tắc sau: Với mỗi địa điểm ở ô \((x,y) (x,y ∈ Z)\) trên bản đồ:
Có đúng \(A\) con đường 1 chiều dẫn đến địa điểm ở ô \((x+1,y)\)
Có đúng \(B\) con đường 1 chiều dẫn đến địa điểm ở ô \((x,y+1)\)
Có đúng \(C\) con đường 1 chiều dẫn đến địa điểm ở ô \((x+1,y+1)\)
Yêu cầu: Bạn đang ở địa điểm nằm trên tọa độ \((0,0)\) và muốn đến địa điểm nằm trên tọa độ \((N,M)\). Đếm xem có bao nhiêu cách đi thỏa mãn.
Dữ liệu
- Gồm một dòng chứa 5 số nguyên \(N,M,A,B,C (0 ≤ N,M ≤ 5×10^6; 0 ≤ A,B,C ≤ 10^9)\)
Kết quả
- Ghi một số duy nhất là số lượng cách đi thỏa mãn. Vì kết quả có thể rất lớn nên hãy modulo \(10^9 + 7.\)
Ràng buộc:
Subtask 1: 20% số test có: \(N,M ≤ 5000.\)
Subtask 2: 20% số test tiếp theo có: \(N,M ≤ 10^5; A = B = 1; C = 0.\)
Subtask 3: 20% số test khác có: \(N,M ≤ 10^5; C = 0.\)
Subtask 4: 30% số test tiếp theo có: \(N,M ≤ 10^5.\)
Subtask 5: 10% số test còn lại: Không có điều kiện gì thêm.
Sample Input
1 1 1 1 1
Sample Output
3
Giải thích:
Có 3 đường đi: (0,0) -> (0,1) -> (1,1)
(0,0) -> (1,0) -> (1,1)
(0,0) -> (1,1)
Comments