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]. 
#   number of non-decreasing sequences of length n with values in [1...m]
# = number of combinations with repetition of length n from m objects
# = choose(m+n-1,n)

#   number of non-decreasing sequences of length m ending with am
# = number of non-decreasing sequences of length (m-1) with values in [1...am]
# = choose(m+am-2,m-1)

#   number of non-increasing sequences of length m ending in bm
# = number of non-decreasing sequences of length (m-1) with values in [bm...n]
# = choose(n-bm+m-1,m-1)

#   number required with fixed am
# = choose(m+am-2,m-1) [choose(n-am+m-1,m-1) + ... + choose(n-n+m-1,m-1)]
# = choose(m+am-2,m-1) [choose(n-am+m-1,m-1) + ... + choose(m-1,m-1)]
# = choose(m+am-2,m-1) [choose(n-am+m-1,m-1) + ... + choose(m-1,m-1)]
# = choose(m+am-2,m-1) choose(n-am+m,m)

#   choose(m+am-2,m-1) choose(n-am+m,m) : choose(m+am-1,m-1) choose(n-am-1+m,m)
# = am(n-am+m) : (m+am-1)(n-am)

#   choose(m-1,m-1) choose(n-1+m,m)
# = choose(n-1+m,m)

n,m = map(int,input().split())
res = 0
p = 1

# choose(n-1+m,m)
for i in range(m):
	p = p*(n+m-i-1)//(i+1)

for am in range(1,n+1):
	res = (res+p)%(10**9+7)
	p = p*(m+am-1)//am*(n-am)//(n-am+m)

print(res)