Xét bảng hình chữ nhật kích thước \(m \times n\) ô. Các hàng được đánh số từ \(1\) đến \(m\) từ trên xuống dưới, các cột được đánh số từ \(1\) đến \(n\) từ trái qua phải. Ô nằm trên hàng \(i\) và cột \(j\) được ghi một số nguyên không âm ký hiệu \(c_{ij}\) .Ở góc trên trái bảng có một quân cờ. Ta phải chuyển quân cờ về ô dưới phải của bảng theo quy tắc sau:
- Tại mỗi bước nhảy, chỉ được di chuyển sang phải trên cùng một hàng hoặc di chuyển xuống dưới theo cùng một cột
- Kích thước bước nhảy không được vượt quá số ghi trên ô có quân cờ hiện tại
- Chỉ được di chuyển trong phạm vi bảng đang xét
Kích thước của bước nhảy từ ô \((i,j)\) tới ô \((u, v)\) được tính bằng giá trị \(u + v − i − j\).
Yêu cầu: Cho dãy \(a_1, a_2, ..., a_m, b_1, b_2,...,b_n\) và số nguyên dương \(k\). Bảng \(C\) kích thước \(m \times n\) được xác định với \(C_{ij} = 1 + [(a_i + b_j)\) mod \(k] \forall i = 1 ÷ m; j = 1 ÷ n\). Hãy tính số lượng cách di chuyển quân cờ từ ô trên trái \((1,1)\) xuống ô dưới phải \((m, n)\).
Input
vào từ file văn bản JUMP.INP có cấu trúc như sau:
- Dòng đầu chứa 3 số nguyên dương \(m, n, k ( m, n, k \le 4.10^3)\)
- Dòng thứ hai chứa \(m\) số nguyên \(a_1, a_2, a_3, ... , a_m (0 \le a_i \le 10^9)\)
- Dòng thứ ba chứa \(n\) số nguyên \(b_1, b_2, b_3, ... , b_n (0 \le b_i \le 10^9)\)
Output
- Ghi ra file văn bản JUMP.OUT một số nguyên duy nhất là số cách di chuyển tìm
được lấy theo module \(10^9 + 7\).
Scoring
- Subtask \(1\) (\(15\%\) số điểm): \(m, n \le 10, k = 1\)
- Subtask \(2\) (\(15\%\) số điểm): \(m, n \le 10^3, k = 1\)
- Subtask \(3\) (\(20\%\) số điểm): \(m, n \le 10^3, k \le 10\)
- Subtask \(4\) (\(20\%\) số điểm): \(m, n \le 10^3\)
- Subtask \(5\) (\(30\%\) số điểm): không có ràng buộc gì thêm
Example
Test 1
Input
3 2 1
3 4 11
2 5
Output
3
Test 2
Input
3 2 2
3 4 11
2 5
Output
4
Bình luận