1 #include<iostream>
2 #include<cstdio>
3 #include<cstring>
4 using namespace std;
5
6 int sr,sb,sg,n,m,p,ans;
7 int a[70][70],f[70][70][70],d[70];
8 bool b[70];
9
10 int dp(int x)
11 {
12 memset(b,0,sizeof(b));
13 int sum=0,t;
14 for(int i=1;i<=n;i++)
15 if(!b[i])
16 {
17 d[++sum]=1;t=i;
18 b[t]=1;
19 while(!b[a[x][t]])
20 {
21 d[sum]++;
22 b[a[x][t]]=1;
23 t=a[x][t];
24 }
25 }
26 memset(f,0,sizeof(f));
27 f[0][0][0]=1;
28 for(int h=1;h<=sum;h++)
29 for(int i=sr;i>=0;i--)
30 for(int j=sb;j>=0;j--)
31 for(int k=sg;k>=0;k--)
32 {
33 if(i>=d[h]) f[i][j][k]=(f[i][j][k]+f[i-d[h]][j][k])%p;
34 if(j>=d[h]) f[i][j][k]=(f[i][j][k]+f[i][j-d[h]][k])%p;
35 if(k>=d[h]) f[i][j][k]=(f[i][j][k]+f[i][j][k-d[h]])%p;
36 }
37 return f[sr][sb][sg];
38 }
39
40 int exgcd(int a,int b,int &x,int &y)
41 {
42 if(b==0)
43 {
44 x=1;y=0;
45 return a;
46 }
47 int q=exgcd(b,a%b,y,x);
48 y-=a/b*x;
49 return q;
50 }
51
52 int main()
53 {
54 scanf("%d %d %d %d %d",&sr,&sb,&sg,&m,&p);
55 n=sr+sb+sg;
56 for(int i=1;i<=m;i++)
57 for(int j=1;j<=n;j++)
58 scanf("%d",&a[i][j]);
59 m++;
60 for(int i=1;i<=n;i++) a[m][i]=i;
61 for(int i=1;i<=m;i++)
62 ans=(ans+dp(i))%p;
63 int x,y;
64 exgcd(m,p,x,y);
65 while(x<=0) x+=p,y-=m;
66 printf("%d",ans*x%p);
67 return 0;
68 }