题目链接:传送门(点我)
#include<iostream>
using namespace std;
typedef unsigned long long ll;
int n , m , p;
ll calc(int a , int b)
{
ll ans = 1;
for(int i = a ;i <= b ; i ++)ans = (ans * i) % p;
return ans;
}
ll ny(ll num)
{
int a = num , b = p - 2;
ll ans = 1;
while(b)
{
if(b & 1)ans = (ans * num) % p;
b >>= 1;
num = (num * num) % p;
}
return ans;
}
int main()
{
cin >> n >> m >> p;
return cout << ( calc(m + 1 , n) * ny(calc(1 , n - m))) % p , 0;
}