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.*;
import java.util.*;
import java.lang.*;
public class Main {
	public static void initi(long arr[][])
	{
		for(int i=0;i<arr.length;i++)
		{
			for(int j=0;j<arr[0].length;j++)
			{
				arr[i][j]=0l;
			}
		}
	}
	public static void main(String[] args)throws IOException {
        InputReader in = new InputReader(System.in);
        PrintWriter out = new PrintWriter(System.out);
        
		int n = in.nextInt();
		int m = in.nextInt();
		long mod = (long)Math.pow(10,9) + 7;
		long inc[] = new long[n+1];
		long dec[] = new long[n+1];
		for(int i=0;i<n+1;i++){
			inc[i]=1; dec[i]=0;
		}
		long val;long sum = 0;
		for(int i=0;i<m-1;i++)
		{
			for(int j=2;j<=n;j++)
			{
				inc[j] = (inc[j] + inc[j-1])%mod;
			}
		}
		long val1=0,val2,ans = 0;
		for(int x=1;x<=n;x++)
		{
			val1=0;
			val2 = inc[x]%mod;
			for(int k=1;k<=n;k++)
				dec[k] = (k>=x) ? 1 : 0;
			for(int i=m-2;i>=0;i--)
			{
				for(int j=x+1;j<=n;j++)
				{
					dec[j] = (dec[j] + dec[j-1])%mod;
				}
			}

			for(int k=x;k<=n;k++)
			{
				val1 = (val1 + dec[k])%mod;
			}
			ans = (ans + (val1*val2)%mod)%mod;
		}
		out.println(ans);
        out.close();
	}
    static class InputReader {
        public BufferedReader reader;
        public StringTokenizer tokenizer;

        public InputReader(InputStream stream) {
            reader = new BufferedReader(new InputStreamReader(stream), 32768);
            tokenizer = null;
        }

        public String next() {
            while (tokenizer == null || !tokenizer.hasMoreTokens()) {
                try {
                    tokenizer = new StringTokenizer(reader.readLine());
                } catch (IOException e) {
                    throw new RuntimeException(e);
                }
            }
            return tokenizer.nextToken();
        }

        public int nextInt() {
            return Integer.parseInt(next());
        }

        public long nextLong() {
            return Long.parseLong(next());
        }

    }

}