Problem E

MIXING INVITATIONS

Kelly is having a birthday party soon, and would like to invite all her friends to come. There is one problem though: her house is far too small to accommodate everyone! She has already written up personalised invitations to all her friends with corresponding addressed envelopes to mail them in, and now she doesn't know what to do.

Luckily, Alex has thought of a clever way to help Kelly out. He knows that if a friend receives an invitation personalised to him or her, that friend will definitely come to the party. However, if a friend receives an invitation personalised to someone else (ie. the wrong invitation), that friend will surely not come to the party. Alex then goes to mix up Kelly's invitations and envelopes so that some invitations may be mailed to the wrong addressee. This way everyone still gets an invitation and nobody is left out, but no more people would come than would fit into Kelly's house.

There are exactly as many envelopes as there are invitations, and each invitation has a corresponding envelope with the same addressee. Alex must place each invitation into an envelope in such a way that there are no more invitations in their correct envelopes than the amount of people Kelly can accommodate.

Being the clever mathematician that he is, Alex would like to count the number of ways that he can mix up the invitations and envelopes to accomplish his goal. Can you write a program to do this for Alex?

Input

The input file contains several test cases, each on a separate line. Each line contains two positive integers, N and M, separated by a space. N (1 ≤ N ≤ 20) is the number of invitations Kelly has written, and M (0 ≤ M ≤ N) is the maximum number of people Kelly can accommodate.

Output

For each test case, output on a separate line a single integer: the number of ways Alex can mix up the invitations and envelopes to accomplish his goal.

Sample Input

3 2
4 1
4 4

Output for the Sample Input

5
17
24

Daniel Adler
Calgary Collegiate Programming Contest 2006