Suppose that you have x pairs of parentheses and y pairs of brackets. In how many ways can you correctly put the parentheses and brackets?

For example, there are 15 ways with x = 2 and y = 1:

()()[] | ()[()] | (()[]) | ([()]) | [()]() |

()([]) | (())[] | (([])) | []()() | [()()] |

()[]() | ([])() | ([]()) | [](()) | [(())] |

The number of combinations grows very fast with x and y. Therefore, make the calculations modulo a given natural number m.

Input

Input consists of several cases.
Every case has x, y and m.
Suppose 0 ≤ x ≤ 50,
0 ≤ y ≤ 50,
and 2 ≤ m ≤ 10^{8}.

Output

For every case, print the number of correct ways to place x pairs of parentheses and y pairs of brackets, modulo m.

Public test cases

**Input**

2 1 1000000 1 2 1000000 1 2 4 0 0 1000000 1 0 1000000 2 0 1000000 3 0 1000000 6 6 100000000 6 6 1000 50 50 100000000

**Output**

15 15 3 1 1 2 5 92203088 88 24825920

Information

- Author
- Salvador Roura
- Language
- English
- Translator
- Salvador Roura
- Original language
- Catalan
- Other languages
- Catalan
- Official solutions
- C++
- User solutions
- C++