Có N ô nằm trên một hàng, đánh số 1,…,N. Một hành trình là một thứ tự ghé thăm mọi ô đúng một lần, bắt đầu ở s và kết thúc ở e.
Kể từ bước nhảy thứ hai, hướng phải luân phiên. Với ba ô liên tiếp u,v,w trên hành trình, nếu u<v thì phải có w<v; nếu u>v thì phải có w>v. Bước đầu tiên có thể đi theo bất kỳ hướng nào. Hãy đếm số hành trình như vậy.
Input
Một dòng chứa N,s và e.
Output
In số hành trình zích zắc hợp lệ modulo 109+7.
Constraints
2≤N≤2000.
1≤s,e≤N và s=e.
Dữ liệu bảo đảm tồn tại ít nhất một hành trình hợp lệ.
Scoring
Subtask 1 (50% số điểm): N≤9.
Subtask 2 (50% số điểm): Không có giới hạn bổ sung.
Example
Test 1
Input
3 1 2
Output
1
Giải thích: Thứ tự duy nhất là 1,3,2: bước đầu sang phải và bước sau sang trái. Mọi ô được ghé đúng một lần, nên đáp án bằng 1.
Lời giải tóm tắt
Ý tưởng: Xét các giá trị 1,2,...,N theo thứ tự tăng. Trong một hành trình zích zắc hoàn chỉnh, các giá trị đã chèn tạo thành các đoạn rời của đường đi. DP lưu số đoạn đang có.
Ý tưởng: Giá trị s hoặc e là đầu mút toàn cục nên chỉ có thể tạo một đoạn mới hoặc nối vào một đoạn. Giá trị thường có thể nối hai đoạn, hoặc tạo một đoạn mới trong một khoảng hợp lệ. Khi s/e đã được chèn, khoảng chứa đầu mút ấy không còn là vị trí hợp lệ để tạo đoạn mới, nên số lựa chọn phải trừ tương ứng.
Ý tưởng: Việc xóa các giá trị lớn hơn khỏi một hành trình hợp lệ tạo đúng chuỗi trạng thái nói trên; ngược lại các chuyển duy trì bậc và tính luân phiên. Đáp án là trạng thái một đoạn. Thời gian O(N^2), bộ nhớ O(N).
Lỗi cần tránh: Không trừ các khoảng đã bị đầu mút s hoặc e chiếm khi tạo thành phần mới.
Lỗi cần tránh: Giữ đúng mọi trường hợp biên và kiểu số đã nêu trong đề.
Lỗi cần tránh: Chỉ lấy modulo ở những bài có yêu cầu modulo; bài 10 và bài 9 phải giữ nguyên số nguyên 64 bit.