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
47
48
#include <bits/stdc++.h>
using namespace std;
long long t1[2002][2002],t2[2002][2002];
int main() {
//ios_base::sync_with_stdio(0);
int n, m , k, i, j, z, jj, zz;
long long wyn = 0, w1, w2;
cin >> n >> m >> k;

for(i = 1; i <=m ; i++)
	for(j = i; j <= m; j++) { t2[i][j]=1;wyn++;}
	
for(i =1; i < n ; i++){
	wyn = 0;
	if(i % 2 == 1) {
		//t1 =
		for(j = 1; j <= m;j++){
			for(z = j; z <= m; z++){
				w1 = 0; //przedzial od j do z
				for(jj = 1; jj <=z;jj++)
					for(zz = j; zz <= m; zz++) {
						w1 +=t2[jj][zz];
					}
			t1[j][z]= w1;
			wyn += w1;	
			wyn = wyn % k;					
			}			
		}
	}
	else{
		//t2 =
		for(j = 1; j <= m;j++){
			for(z = j; z <= m; z++){
				w2 = 0;
				for(jj = 1; jj <=z;jj++)
					for(zz = j; zz <= m; zz++) {
						w2 +=t1[jj][zz];
					}
			t2[j][z] = w2;	
			wyn += w2;
			wyn = wyn % k;			
			}
		}
	}
}
cout << wyn% k;
	return 0;
}