#include <bits/stdc++.h>
/// Template Dutzu
#define fast ios_base::sync_with_stdio(false);cin.tie(0);
#define MOD 3210121
using namespace std;
ifstream fin("cowfood.in.in");
ofstream fout("cowfood.in.out");
int v[21][31];
int f[301];
bool used[31];
int total;
int k,s;
long long inv(int a, int m)
{
long long yn;
long long x=1,y=0;
while (a)
{
yn=x-m/a*y;
x=y;
y=yn;
long long r=m%a;
m=a;
a=r;
}
return y%MOD;
}
int expo(int a, int n)
{
int p=1;
while (n)
{
if (n%2)
p=(1LL*p*a)%MOD;
a=(1LL*a*a)%MOD;
n/=2;
}
return p;
}
int comb(int n, int k)
{
long long dem;
dem=f[n];
long long imp;
imp=(1LL*f[k]*f[n-k])%MOD;
imp=expo(imp,MOD-2);
return (1LL*dem*imp)%MOD;
}
int maxim[31];
int A[31];
void bkt(int vf, int& rez, int n)
{
if (vf>n)
{
int cnt=0;
long long suma=0;
memset(A,0,sizeof(A));
for (int i=1;i<=n;i++)
if (used[i]==1)
{
cnt++;
for (int j=1;j<=n;j++)
A[j]=max(A[j],v[i][j]);
}
for (int j=1;j<=n;j++)
suma+=A[j];
if (!cnt)
return;
if (cnt%2)
rez=(rez+comb(suma+k,k))%MOD;
else
rez=(rez-comb(suma+k,k)+MOD)%MOD;
return;
}
bkt(vf+1,rez,n);
used[vf]=1;
bkt(vf+1,rez,n);
used[vf]=0;
}
int main()
{
fast
int n;
fin>>k>>s>>n;
f[1]=1;
for (int i=2;i<=300;i++)
f[i]=(1LL*f[i-1]*i)%MOD;
total=comb(s-1,k);
for (int i=1;i<=n;i++)
for (int j=1;j<=k;j++)
fin>>v[i][j];
int rez=0;
bkt(1,rez,n);
fout<<total-rez;
return 0;
}