Một khu vườn được biểu diễn dưới dạng một hàng ngang gồm \(N\) ô đánh số từ 1 đến \(N\). Ban đầu, tất cả các ô đều có chứa trái cây. Một con kangaroo chạy tới khu vườn từ ô \(cs\). Sau đó nó bắt đầu nhảy đến từng ô trong vườn để ăn hết trái cây ở các ô đó. Nó sẽ luôn kết thúc lộ trình ăn uống của mình ở ô \(cf\), sau khi nhảy qua đúng \(N\) ô khác nhau, mỗi ô được nhảy vào đúng một lần, bao gồm cả ô \(cs\) và ô \(cf\). Hiển nhiên, con kangaroo này sẽ nhảy tổng cộng \(N−1\) bước.
Vì con kangaroo không muốn bị bắt nên sau mỗi bước nhảy nó đều sẽ đổi hướng nhảy so với lần nhảy trước: Nếu nó đang đứng ở ô \(current\) sau khi nhảy đến từ ô \(prev\), và từ ô này nó sẽ tiếp tục nhảy đến ô \(next\), thì những điều kiện sau bắt buộc phải được thỏa mãn:
- Nếu \(prev\) < \(current\) thì \(next\) < \(current\);
- Nếu \(current\) < \(prev\) thì \(current\) < \(next\).
- Cho trước \(N\) là số lượng ô trong vườn, \(cs\) là ô xuất phát của kangaroo và \(cf\) là ô cuối cùng mà nó nhảy tới, bạn hãy tính số lượng lộ trình phân biệt mà con kangaroo này có thể nhảy được trong khu vườn.
Input
- Gồm một dòng duy nhất chứa ba số nguyên \(N\), \(cs\) và \(cf\).
Output
- Ghi ra một số nguyên duy nhất là phần dư sau khi chia số lộ trình phân biệt cho \(10^9+7\).
Constraints
- \(2 \leq N \leq 2000\).
- \(1 \leq cs \leq N\).
- \(1 \leq cf \leq N\).
- \(c_s \neq c_f\).
- Các lộ trình được xác định bằng thứ tự các ô mà con kangaroo nhảy đến.
- Dữ liệu đảm bảo tồn tại ít nhất một lộ trình thỏa mãn các ràng buộc.
- Con kangaroo có thể nhảy theo bất kỳ hướng nào khi nó xuất phát ở ô \(cs\).
Scoring
- Subtask \(1\) (\(6\%\) số điểm): \(N \leq 8\).
- Subtask \(2\) (\(36\%\) số điểm): \(N \leq 40\).
- Subtask \(3\) (\(51\%\) số điểm): \(N \leq 200\).
Example
Test 1
Input
4 2 3
Output
2
Note
- Con kangaroo xuất phát ở ô 2 và kết thúc ở ô 3. Hai lộ trình mà nó có thể nhảy qua là \(2→1→4→3\) và \(2→4→1→3\).
Bình luận