H - Bolas en fila

Languages: C, C++, Java, Pascal, Python, Tiger, JavaScript, Haskell, C#
Time & Memory limits: (details)

Se tiene una caja con $N$ bolas, que pueden ser rojas o azules. En cada paso se extrae una bola de la caja, después se adiciona una bola roja y otra azul y por último se extrae otra bola. Las bolas que se van extrayendo en cada paso se ponen en una fila en el mismo orden que se sacaron. Se quiere saber la cantidad de filas distintas que es posible formar haciendo $M$ pasos.

Input

La entrada es una línea con dos enteros $N (1 \leq  N \leq  3000)$ y $M (1 \leq M \leq 3000)$ separados por un espacio, que representan respectivamente la cantidad inicial de bolas y de pasos a ejecutar.

Output

La salida es una entero con la cantidad de filas distintas que se pueden obtener después de $M$ pasos. Como este número puede ser muy grande se debe imprimir el resto de su división por $1000000007$.

Sample test(s)

Input
2 1
Output
4