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]. 
def zip_sorted(a,b):

	# sorted  by a
	a,b = zip(*sorted(zip(a,b)))
	# sorted by b
	sorted(zip(a, b), key=lambda x: x[1])

	return a,b

import sys
input = sys.stdin.readline
I = lambda : list(map(int,input().split()))
S = lambda : list(map(str,input().split()))


# from math import factorial as fact

# def nCr(n, k):
# 	return fact(n) // (fact(k) * fact(n - k))




# n,m = I()
# sum1 = 0
# sum2 = 0
# for i in range(1,n+1):
# 	sum1+=((nCr(m+i-1,m)*nCr(n+m-i,m)))%((10**9)+7)
# 	sum2+=(i*(n-i))%((10**9)+7)
# print((sum1-sum2)%((10**9)+7))


def zip_sorted(a,b):

	# sorted  by a
	a,b = zip(*sorted(zip(a,b)))
	# sorted by b
	sorted(zip(a, b), key=lambda x: x[1])

	return a,b

import sys
input = sys.stdin.readline
I = lambda : list(map(int,input().split()))
S = lambda : list(map(str,input().split()))

from math import factorial as fact

def nCr(n, k):
	return fact(n) // (fact(k) * fact(n - k))


n,m = I()
sum1 = 0
sum2 = 0
print((nCr(n+(2*m)-1,(2*m)))%((10**9)+7))

# from math import factorial as fact
# mod = 10**9 + 7


# n, m = map(int, input().split())
# print(C(n + 2*m - 1, 2*m) % mod)