//#include<iostream>
//#include<string.h>
//using namespace std;
//long long int a[60][60][15][15];
//long long int n,m,k;
//long long int map[60][60];
//#define MOD %1000000007
//long long dfs(long long x,long long y,long long num,long long v)
//{
// long long t=0;
// if(a[x][y][num][v+1]!=-1)
// {
// return a[x][y][num][v+1];
// }
// if(x==n&&y==m)
// {
// if(map[x][y]>v)
// {
// if(num==k||num==k-1) t++;
// }
// else if(num==k)
// t++;
//
// return a[x][y][num][v+1]=t;
// }
// if(x+1<=n)
// {
// if(map[x][y]>v)
// {
// t+=dfs(x+1,y,num+1,map[x][y]);
// t=t MOD;
// }
// t+=dfs(x+1,y,num,v);
// t=t MOD;
// }
// if(y+1<=m)
// {
// if(map[x][y]>v)
// {
// t+=dfs(x,y+1,num+1,map[x][y]);
// t=t MOD;
// }
// t+=dfs(x,y+1,num,v);
// t=t MOD;
// }
// a[x][y][num][v+1]=t;
// return a[x][y][num][v+1];
//}
//int main()
//{
// memset(a,-1,sizeof(a));
// cin>>n>>m>>k;
// for(int i=1;i<=n;i++)
// {
// for(int j=1;j<=m;j++)
// {
// cin>>map[i][j];
// }
// }
// dfs(1,1,0,-1);
// cout<<a[1][1][0][0]<<endl;
// return 0;
//}
//#include<string.h>
//using namespace std;
//long long int a[60][60][15][15];
//long long int n,m,k;
//long long int map[60][60];
//#define MOD %1000000007
//long long dfs(long long x,long long y,long long num,long long v)
//{
// long long t=0;
// if(a[x][y][num][v+1]!=-1)
// {
// return a[x][y][num][v+1];
// }
// if(x==n&&y==m)
// {
// if(map[x][y]>v)
// {
// if(num==k||num==k-1) t++;
// }
// else if(num==k)
// t++;
//
// return a[x][y][num][v+1]=t;
// }
// if(x+1<=n)
// {
// if(map[x][y]>v)
// {
// t+=dfs(x+1,y,num+1,map[x][y]);
// t=t MOD;
// }
// t+=dfs(x+1,y,num,v);
// t=t MOD;
// }
// if(y+1<=m)
// {
// if(map[x][y]>v)
// {
// t+=dfs(x,y+1,num+1,map[x][y]);
// t=t MOD;
// }
// t+=dfs(x,y+1,num,v);
// t=t MOD;
// }
// a[x][y][num][v+1]=t;
// return a[x][y][num][v+1];
//}
//int main()
//{
// memset(a,-1,sizeof(a));
// cin>>n>>m>>k;
// for(int i=1;i<=n;i++)
// {
// for(int j=1;j<=m;j++)
// {
// cin>>map[i][j];
// }
// }
// dfs(1,1,0,-1);
// cout<<a[1][1][0][0]<<endl;
// return 0;
//}