#P51170. 「CEOI2016」袋鼠

「CEOI2016」袋鼠

题目描述

一行共有 NN 个格子,从左到右从 11NN 编号。一只袋鼠从 csc_s 出发,经过恰好 N1N-1 次跳跃,到达 cfc_f,并且经过所有的 NN 个格子,每次跳跃的方向都与上一次不同。如果袋鼠当前所在的格子为 current\text{current},来自 prev\text{prev},则其下一个格子 next\text{next} 满足:

  • 如果 prev<current\text{prev} < \text{current},则 next<current\text{next} < \text{current}
  • 如果 current<prev\text{current} < \text{prev},则 current<next\text{current} < \text{next}

求不同的跳跃方案数除以 1000000007 (109+7)1000000007\ (10^9+7) 的余数。

输入格式

一行三个正整数 N,cs,cfN, c_s, c_f.

输出格式

一行一个整数,表示袋鼠的不同路线数模 100000007 (109+7)100000007\ (10^9+7) 的余数。

样例

4 2 3
2

袋鼠从第 22 个格子跳到第 44 个格子。两种路线分别为 21432\to 1\to 4\to 324132\to 4\to 1\to 3

数据范围与提示

  • 2N20002 \le N \le 2000
  • 1csN1 \le c_s \le N
  • 1cfN1 \le c_f \le N
  • cscfc_s \neq c_f
  • 对于 6%6\% 的测试数据,N6N \le 6
  • 对于 36%36\% 的测试数据,N40N \le 40
  • 对于 51%51\% 的测试数据,N200N \le 200
  • 两条路线不同当且仅当访问各个格子的顺序不同。
  • 数据保证至少有一条符合要求的路线。
  • 袋鼠第一次从 csc_s 开始可以向任意方向跳跃。