#include<iostream> //#include<> using namespace std; int bkg=0; int ct=0; int k=0; int n=0,m=0; int map[50][50]={0}; void dfs(int a,int b,int bmax) { if(a>=n||a<0||b>=m||b<0 ) { if(a==n-1&&b==m && bkg ==k)//是否终点 且 k==2 { ct=(ct+1)%1000000007; // 走法+1 } return; } //越界了么? //判断能不能take if(bmax<map[a][b] && bkg<k)//take { //map[a][b]; bkg++; //k++ dfs(a,b+1,map[a][b]); //右走 dfs(a+1,b,map[a][b]); //下走 //饱和了 // cout<<map[a][b]<<endl; // cv++; bkg--; } dfs(a,b+1,bmax); dfs(a+1,b,bmax); } int main() { cin>>n>>m>>k;//n=a m=b for(int i=0;i<n;i++) for(int j=0;j<m;j++) { cin>>map[i][j]; }//构造地图 dfs(0,0,0); cout<<ct; return 0; }