import math

MOD = 10**9+7

n,m = list(map(int,input().split()))

#大きい順に並べる

if n < m:

  n,m = m,n



# mがn-1より小さいとどこかで犬・サル同士が隣り合う

if n-1 > m:

  print((0))

  exit()

  

if n == m:

  ans = math.factorial(n)* math.factorial(m)*2

  print((ans%MOD))

  

elif n-1 == m:

  ans = math.factorial(n)* math.factorial(m)

  print((ans%MOD))

    

  
import math

MOD = 10**9+7

n,m = list(map(int,input().split()))

#大きい順に並べる

if n < m:

  n,m = m,n



# mがn-1より小さいとどこかで犬・サル同士が隣り合う

if n-1 > m:

  print((0))

  exit()

  

if n == m:

  ans = (math.factorial(n)%MOD) * (math.factorial(m)%MOD)*2

  print((ans%MOD))

  

elif n-1 == m:

  ans = (math.factorial(n)%MOD) * (math.factorial(m)%MOD)

  print((ans%MOD))

    

  
import math

MOD = 10**9 + 7
n, m = list(map(int, input().split()))
# 大きい順に並べる
if n < m:
    n, m = m, n
# mがn-1より小さいとどこかで犬・サル同士が隣り合う
if n - 1 > m:
    print((0))
    exit()
if n == m:
    ans = math.factorial(n) * math.factorial(m) * 2
    print((ans % MOD))
elif n - 1 == m:
    ans = math.factorial(n) * math.factorial(m)
    print((ans % MOD))

import math

MOD = 10**9 + 7
n, m = list(map(int, input().split()))
# 大きい順に並べる
if n < m:
    n, m = m, n
# mがn-1より小さいとどこかで犬・サル同士が隣り合う
if n - 1 > m:
    print((0))
    exit()
if n == m:
    ans = (math.factorial(n) % MOD) * (math.factorial(m) % MOD) * 2
    print((ans % MOD))
elif n - 1 == m:
    ans = (math.factorial(n) % MOD) * (math.factorial(m) % MOD)
    print((ans % MOD))

-    ans = math.factorial(n) * math.factorial(m) * 2 +    ans = (math.factorial(n) % MOD) * (math.factorial(m) % MOD) * 2 -    ans = math.factorial(n) * math.factorial(m) +    ans = (math.factorial(n) % MOD) * (math.factorial(m) % MOD)