//要求比任意一个都大就记录当前最大值,每次与最大值进行比较
#include<cstdio>
int Map[100][100];//数组开的太大了容易报错
int k,n,m;
long long ans=0;
void dfs(int x,int y,int cur,int max){
if(x>n||y>m||cur>k)return ;
if(x==n&&y==m){
if(cur==k||(cur==k-1&&Map[x][y]>max)){
ans++;
return ;
}
}
if(Map[x][y]>max){
dfs(x+1,y,cur+1,Map[x][y]);
dfs(x,y+1,cur+1,Map[x][y]);}
dfs(x+1,y,cur,max);
dfs(x,y+1,cur,max);
}
int main(){
scanf("%d%d%d",&n,&m,&k);
for(int i=1;i<=n;i++)
for(int j=1;j<=m;j++)
scanf("%d",&Map[i][j]);
dfs(1,1,0,-10000);
printf("%d",ans%1000000007);
return 0;
}
注意if语句的括号匹配