atcoder#ARC076A. [ABC065C] Reconciled?

[ABC065C] Reconciled?

配点 : 300300

問題文

すぬけ君は、犬を NN 匹と猿を MM 匹飼っています。すぬけ君は、この N+MN+M 匹を一列に並べようと思っています。

文字通り犬猿の仲の犬たちと猿たちを仲直りさせたいすぬけ君は、犬同士、または猿同士が隣り合うところができないように並べようと思っています。

このような並べ方は何通りあるでしょうか。犬と猿は 109+710^9+7 以上の数を理解できないので、並べ方の個数を 109+710^9+7 で割ったあまりを求めてください。 ただし、犬同士、また猿同士は互いに区別します。また、左右が反転しただけの列も異なる列とみなします。

制約

  • 1N,M1051 \leq N,M \leq 10^5

入力

入力は以下の形式で標準入力から与えられる。

NN MM

出力

並べ方の個数を 109+710^9+7 で割ったあまりを出力せよ。

2 2
8

犬をそれぞれ A,B とし、猿をそれぞれ C,D とすると、ACBD,ADBC,BCAD,BDAC,CADB,CBDA,DACB,DBCA88 通りの並べ方があります。

3 2
12
1 8
0
100000 100000
530123477