Find the number of the possible tuples of sequences (A_0,A_1,...,A_N) that satisfy all of the following conditions, modulo M:

* For every i (0\leq i\leq N), A_i is a sequence of length i consisting of integers between 1 and K (inclusive);
* For every i (1\leq i\leq N), A_{i-1} is a subsequence of A_i, that is, there exists 1\leq x_i\leq i such that the removal of the x_i-th element of A_i would result in a sequence equal to A_{i-1};
* For every i (1\leq i\leq N), A_i is lexicographically larger than A_{i-1}.

Constraints

* 1 \leq N,K \leq 300
* 2 \leq M \leq 10^9
* N, K and M are integers.

Input

Input is given from Standard Input in the following format:


N K M


Output

Print the number of the possible tuples of sequences (A_0,A_1,...,A_N), modulo M.

Examples

Input

2 2 100


Output

5


Input

4 3 999999999


Output

358


Input

150 150 998244353


Output

186248260
#include<bits/stdc++.h>
#define MN 300
using namespace std;
inline int read()
{
	int x=0,f=1;char ch=getchar();
	while(ch<'0'||ch>'9'){if(ch=='-')f=-1;ch=getchar();}
	while(ch>='0'&&ch<='9'){x=x*10+ch-'0';ch=getchar();}
	return x*f;
}
int n,K,mod,f[MN+5][MN+5],g[MN+5][MN+5],C[MN+5][MN+5];
int main()
{
    n=read();K=read();mod=read();
    for(int i=0;i<=n;++i) C[i][0]=1;
    for(int i=1;i<=n;++i) for(int j=1;j<=i;++j) C[i][j]=(C[i-1][j-1]+C[i-1][j])%mod;
    for(int i=1;i<=n+1;++i) for(int j=0;j<=K;++j) f[0][j]=1,g[0][j]=K-j+1;
    for(int i=1;i<=n;++i)
    {
        for(int k=1;k<=i;++k) for(int v=0;v<=K;++v)
            f[i][v]=(f[i][v]+1LL*g[k-1][v+1]*f[i-k][v]%mod*C[i-1][k-1])%mod;
        for(int v=K;v;--v) g[i][v]=(g[i][v+1]+f[i][v])%mod;
    }
    printf("%d\n",f[n][0]);
	return 0;
}
