#include<bits/stdc++.h>
#pragma GCC optimize(1)
#pragma GCC optimize(2)
#pragma GCC optimize(3,"Ofast","inline")
long long N,M,p;
using namespace std;
long long KSM(long long a,long long b,long long p) {
long long ans=1;
while(b) {
if(b&1)ans=(ans*a)%p;
a=(a*a)%p;
b/=2;
}
return ans;
}
long long C(long long a,long long b) {
if(a<b)return 0;
if(a==b)return 1;
if(b>a-b)b=a-b;
long long A=1,B=1;
for(long long i=0; i<b; ++i) {
A=(A*(a-i))%p;
B=(B*(b-i))%p;
}
return (A*KSM(B,p-2,p));
}
long long Lucas(long long n,long long m) {
if(m==0)return 1;
return C(n%p,m%p)*Lucas(n/p,m/p)%p;
}
int main() {
//freopen(" .in","r",stdin);
//freopen(" .out","w",stdout);
cin>>N>>M>>p;
cout<<Lucas(N+M,M);
}