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


def inp(dtype=str, strip=True):
    s = input()
    res = [dtype(p) for p in s.split()]
    res = res[0] if len(res) == 1 and strip else res
    return res


def problem1():
    t = inp(int)
    for _ in range(t):
        n, d = inp(int)
        res = False
        sq = math.floor(math.sqrt(d))
        for x in range(max(sq - 1000, 0), min(sq + 1000, n)):
            if x + math.ceil(d / (x + 1)) <= n:
                res = True
                break
        if res:
            print('YES')
        else:
            print('NO')


def problem2():
    t = inp(int)
    for _ in range(t):
        A, B = inp(int)
        res = 0
        len_b = 1
        while 10 ** len_b - 1 <= B:
            res += A
            len_b += 1
        print(res)


def problem3():
    n, m = inp(int)
    mod = 10 ** 9 + 7

    # mat[k][t] -- number of non-descending sequences of length k
    # with last element equal to t
    mat = [[0 for _ in range(n + 1)] for _ in range(m + 1)]
    for t in range(1, n + 1):
        mat[1][t] = 1

    for k in range(2, m + 1):
        for t in range(1, n + 1):
            for tt in range(1, t + 1):
                mat[k][t] += mat[k - 1][tt]
                mat[k][t] %= mod

    # cum[t] -- number of non-descending sequences of length m
    # with last element <= t
    cum = [0 for _ in range(n + 1)]
    for t in range(1, n + 1):
        for tt in range(1, t + 1):
            cum[t] += mat[m][tt]
            cum[t] %= mod

    res = 0
    for t in range(1, n + 1):
        res += mat[m][t] * cum[n - t + 1]
        res %= mod
    print(res)


def problem4():
    pass


def problem5():
    pass


def problem6():
    pass


if __name__ == '__main__':
    # problem6()
    # problem5()
    # problem4()
    problem3()
    # problem2()
    # problem1()
