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]. 
# Arrays of size m
# 1 <= a[i] <= b[i] <= n

# i < j => a[i] < a[j]
# i < j => b[i] > b[j]

# 2 2
# [1, 1] => [2,2], [2,1], [1,1]
# [1, 2] => [2,2],
# [2, 2] => [2,2]

# If for all i in [1 .. n] a[i] <= b[i] then the arrays are constant from some place or higher.
# Array a is increasing till constant
# Array b is decreasing till constant

# No equal elements.
# Has equal element starting n, n-1, n-2, ... last element.

# Number of all non-decreasing elements arrays is equal to number of all non-increasing elements arrays

import sys

MODULO = 10 ** 9 + 7

# ARR_NUM - size of the array.

def get_monotonic_arr_num(n, m, ARR_NUM):
    if m == 0:
        return 1
    
    if ARR_NUM[n-1][m-1] > 0:
        return ARR_NUM[n-1][m-1]

    elif n == 1:
        ARR_NUM[n-1][m-1] = 1
    elif m == 1:
        ARR_NUM[n-1][m-1] = n
    else:
        total = 0
        for i in range(1, n+1):
            # Arrays of size m that ends with i
            total += get_monotonic_arr_num(i, m - 1, ARR_NUM) % MODULO
        ARR_NUM[n-1][m-1] = total % MODULO

    return ARR_NUM[n-1][m-1]

def get_increasing_arr_num(i, m, ARR_NUM):
    return get_monotonic_arr_num(i, m-1, ARR_NUM)

def get_decreasing_arr_num(n, i, m, ARR_NUM):
    return get_monotonic_arr_num(n-i+1, m-1, ARR_NUM)

# Zdebugowanie:
def get_arr_num(n, m, ARR_NUM):
    total = 0

    for i in range(1, n+1):
        increasing_num = get_increasing_arr_num(i, m, ARR_NUM)
        decreasing_num = get_decreasing_arr_num(n, i, m+1, ARR_NUM)
        total += increasing_num * decreasing_num % MODULO
    
    return total % MODULO

def init_arr_num(n, m):
    ARR_NUM = []
    for i in range(0, n):
        ARR_NUM.append([0] * m)
    return ARR_NUM

def main():
    data = sys.stdin.readlines()
    line = data[0].split(" ")
    n = int(line[0])
    m = int(line[1])
    ARR_NUM = init_arr_num(n, m)
    print(get_arr_num(n, m, ARR_NUM))

def check(n, m, expected):
    ARR_NUM = init_arr_num(n, m)
    result = get_monotonic_arr_num(n, m, ARR_NUM)
    print(ARR_NUM)
    print(result, expected, result == expected)

def test():
    check(1, 1, 1)
    check(2, 1, 2)
    check(1, 2, 1)
    check(2, 2, 3)

main()
