Virtual contest is a way to take part in past contest, as close as possible to participation on time. It is supported only ACM-ICPC mode for virtual contests.
If you've seen these problems, a virtual contest is not for you - solve these problems in the archive.
If you just want to solve some problem from a contest, a virtual contest is not for you - solve this problem in the archive.
Never use someone else's code, read the tutorials or communicate with other person during a virtual contest.

No tag edit access

C. Future Failure

time limit per test

3 secondsmemory limit per test

256 megabytesinput

standard inputoutput

standard outputAlice and Bob are playing a game with a string of characters, with Alice going first. The string consists *n* characters, each of which is one of the first *k* letters of the alphabet. On a player’s turn, they can either arbitrarily permute the characters in the words, or delete exactly one character in the word (if there is at least one character). In addition, their resulting word cannot have appeared before throughout the entire game. The player unable to make a valid move loses the game.

Given *n*, *k*, *p*, find the number of words with exactly *n* characters consisting of the first *k* letters of the alphabet such that Alice will win if both Alice and Bob play optimally. Return this number modulo the prime number *p*.

Input

The first line of input will contain three integers *n*, *k*, *p* (1 ≤ *n* ≤ 250 000, 1 ≤ *k* ≤ 26, 10^{8} ≤ *p* ≤ 10^{9} + 100, *p* will be prime).

Output

Print a single integer, the number of winning words for Alice, modulo *p*.

Example

Input

4 2 100000007

Output

14

Note

There are 14 strings that that Alice can win with. For example, some strings are "bbaa" and "baaa". Alice will lose on strings like "aaaa" or "bbbb".

Codeforces (c) Copyright 2010-2018 Mike Mirzayanov

The only programming contests Web 2.0 platform

Server time: Oct/17/2018 13:48:31 (d2).

Desktop version, switch to mobile version.

Supported by

User lists

Name |
---|