#ATarc076a. [ABC065C] Reconciled?

[ABC065C] Reconciled?

题目描述

すぬけ君养了 NN 只狗和 MM 只猴子。すぬけ君打算把这 N+MN+M 只动物排成一列。

すぬけ君想让这些本来不和的狗和猴子和好,因此他希望在排列时,任何两个狗或者任何两个猴子都不能挨在一起。

问有多少种这样的排列方式。由于狗和猴子都无法理解大于等于 109+710^9+7 的数字,请你输出排列方式的数量对 109+710^9+7 取模的结果。注意,同样种类的狗、同样种类的猴子彼此区别。此外,只有左右对称的队列也被认为是不同的排列。

输入格式

输入以如下格式给出,通过标准输入读入。

NN MM

输出格式

输出排列方式的数量对 109+710^9+7 取模后的结果。

样例 1

输入

2 2

输出

8

样例 2

输入

3 2

输出

12

样例 3

输入

1 8

输出

0

样例 4

输入

100000 100000

输出

530123477

说明/提示

限制条件

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

样例解释 1

将两只狗分别记作 AB,将两只猴分别记作 CD,则可能的排列为:ACBDADBCBCADBDACCADBCBDADACBDBCA,共 88 种排列方式。

由 ChatGPT 5 翻译