``
#include [HTML_REMOVED]
include [HTML_REMOVED]
using namespace std;
int a[55][55],f[55][55][13][15];
int n,m,k;
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",&a[i][j]);
a[i][j]++;
}
f[1][1][0][0]=1;
f[1][1][1][a[1][1]]=1;
for(int i=1;i<=n;i++)
for(int j=1;j<=m;j++)
{
for(int u=0;u<=k;u++)//遍历所有抓取次数
for(int v=0;v<=14;v++)//遍历所有价值情况
{
//不拿(i,j)的情况
int &val=f[i][j][u][v];
val=(val+f[i-1][j][u][v])%1000000007;
val=(val+f[i][j-1][u][v])%1000000007;//不拿(i,j)所有拿东西次数为u的方案的和
if(u>0&&a[i][j]==v)//遍历的价值情况正好于a[i][j]相等,代表这次可以进行抓取操作
{
for(int s=0;s<a[i][j];s++)//把价值小于(i,j)的所有有价值的东西全部抓取
{
val=(val+f[i-1][j][u-1][s])%1000000007;//所有价值小于a[i][j]拿东西次数为u-1的方案的和
val=(val+f[i][j-1][u-1][s])%1000000007;
}
}
}
}
int res=0;
for(int i=1;i<=14;i++)
res=(res+f[n][m][k][i])%1000000007;
printf("%d\n",res);
return 0;
}
``