You are given two integers n and m. Calculate the number of pairs of arrays (a, b) such that:

  * the length of both arrays is equal to m; 
  * each element of each array is an integer between 1 and n (inclusive); 
  * a_i ≤ b_i for any index i from 1 to m; 
  * array a is sorted in non-descending order; 
  * array b is sorted in non-ascending order. 



As the result can be very large, you should print it modulo 10^9+7.

Input

The only line contains two integers n and m (1 ≤ n ≤ 1000, 1 ≤ m ≤ 10).

Output

Print one integer – the number of arrays a and b satisfying the conditions described above modulo 10^9+7.

Examples

Input


2 2


Output


5


Input


10 1


Output


55


Input


723 9


Output


157557417

Note

In the first test there are 5 suitable arrays: 

  * a = [1, 1], b = [2, 2]; 
  * a = [1, 2], b = [2, 2]; 
  * a = [2, 2], b = [2, 2]; 
  * a = [1, 1], b = [2, 1]; 
  * a = [1, 1], b = [1, 1]. 
# import math,string,itertools,fractions,heapq,collections,re,array,bisect,copy

mod = 1000000007
maxn = 1000 + 20
fac = [0] * maxn
fac[0] = fac[1] = 1
for i in range(2, len(fac)):
  fac[i] = (fac[i - 1] * i) % mod

#Python program for Extended Euclidean algorithm
def egcd(a, b):
	if a == 0:
		return (b, 0, 1)
	else:
		gcd, x, y = egcd(b % a, a)
		return (gcd % mod, (y - (b//a) * x) % mod, x % mod)

def inverse(x, mod):
  g, x, y = egcd(x, mod)
  if g != 1:
    assert False, "No solution!" # won't happen here
  else:
    x = (x % mod + mod) % mod
    return x

def mod_inverse(n, mod=10**9+7):
    return pow(n, mod-2, mod)

def c(n, k, mod):
  # print(fac[k], inverse(fac[k], mod), mod_inverse(fac[k], mod))
  # print(fac[n-k], inverse(fac[n - k], mod), mod_inverse(fac[n - k], mod))
  return ((fac[n]%mod) * (inverse(fac[k], mod)%mod) * (inverse(fac[n - k], mod))) % mod
  
N, M = list(map(int, input().strip().split(" ")))
print(c(N + 2*M - 1, N-1, mod))
