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 java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;

public class Class2 {
    static long fact[] = new long[1011];
    static long facti[] = new long[1011];
    static long mod = 1000000007l;

    static long modInverse(long a,long m) {
        long m0 = m;
        long y = 0, x = 1;
        while (a > 1) {
            long q = a / m;
            long t = m;
            m = a % m;
            a = t;
            t = y;
            y = x - q * y;
            x = t;
        }

        // Make x positive
        if (x < 0)
            x += m0;
        return x;
    }

    public static void main(String[] args) throws IOException {
        fact[1] = 1;
        fact[0]=1;
        for (int i = 2; i < 1011; i++) {
            fact[i] = (fact[i - 1] * i) % mod;
        }
        for (int i = 0; i < 1011; i++) {
            facti[i] = modInverse(fact[i],mod);
        }
//        for (int i = 0; i < 10; i++) {
//            System.out.println(facti[i]);
//        }
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        StringTokenizer st = new StringTokenizer(br.readLine(), " ");
        int n = Integer.parseInt(st.nextToken());
        int m = Integer.parseInt(st.nextToken());
        long ans=0l;
        for (int i = 1; i <=n; i++) {
            long mmm=(facti[i+m-2-(m-1)]*facti[m-1])%mod;
            long den1=(fact[(i+m-2)]*mmm)%mod;
            long mm=(facti[n-i]*facti[m])%mod;
            long den2=((fact[n-i+1+m-1]*mm)%mod);
            ans+=(den1*den2)%mod;

            ans=ans%mod;
        }
        System.out.println(ans);
    }
}