1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
#include <bits/stdc++.h>
#include "message.h"
#include "futbol.h"
using namespace std;
typedef long long ll;

ll n, k, i, x, sil, out, mod;

ll pot (ll a, int b)
	{
	if (b==0)
		return 1;
	ll res = pot(a, b/2);
	(res*=res)%=mod;
	if (b%2==1)
		(res*=a)%=mod;
	return res;
	}

ll odw (ll a){
	return pot(a, mod-2);
	}

int main ()
	{
	if (MyNodeId()!=0)
		return 0;
	n = (ll)(GetN());
	k = (ll)(GetK());
	mod = (ll)(GetP());
	//scanf("%lld%lld%lld",&n,&k,&mod);
	sil=1;
	for (i=1; i<=n; i++)
		(sil*=i)%=mod;
	x = odw(sil);
	(out+=x)%=mod;
	for (i=1; i<=k; i++)
		{
		(x*=(n-i+1))%=mod;
		(x*=odw(i))%=mod;
		(out+=x)%=mod;
		}
	(out*=sil)%=mod;
	printf ("%lld\n",out);
	return 0;
	}