#agc045c. [agc045_c]Range Set

[agc045_c]Range Set

题目描述

Snuke 有一个长度为 NN 的字符串 xx。最初,xx 中的每个字符都是 0

Snuke 可以任意次以任何顺序执行以下两种操作之一:

  • 选择 xx 中的 AA 个连续字符,并用 0 替换它们中的每一个。
  • 选择 xx 中的 BB 个连续字符,并用 1 替换它们中的每一个。

找到 Snuke 完成操作后,xx 可能的不同字符串数量。这个数量可能非常大,因此要对 (109+7)(10^9+7) 取模。

约束条件

  • 1leqNleq50001 \\leq N \\leq 5000
  • 1leqA,BleqN1 \\leq A,B \\leq N
  • 输入中的所有值都是整数。

输入

输入以标准输入格式给出,格式如下所示:

NN AA BB

输出

打印 Snuke 完成操作后,xx 可能的不同字符串数量,对 (109+7)(10^9+7) 取模。


示例输入 1

4 2 3

示例输出 1

11

例如,xx 最终可以是 00111111,但不能是 0110


示例输入 2

10 7 2

示例输出 2

533

示例输入 3

1000 100 10

示例输出 3

828178524