import sys from typing import List from functools import lru_cache import bisect n, m = map(int, input().split()) mod = 1000000007 class Solution: def computeWays(self, n: int, m: int) -> int: @lru_cache(None) def dfs(n, m): if n == 0: return 1 if m == 0: return 0 ans = 0 for k in range(n): ans = (ans + (dfs(n - k - 1, m - 1) * dfs(k, m - 1)) % mod) % mod return ans % mod return dfs(n, m) # 测试用例: solution = Solution() print(solution.computeWays(n, m))