DP
//#include<bits/stdc++.h>
#include<stdio.h>
#include<cstring>
using namespace std;
const int MAXN=1010;
long long dp[MAXN][MAXN][2];
int a[MAXN][MAXN];
int main()
{
long long k,tmp;
int n,m,i,j;
while(~scanf("%d%d%lld",&m,&n,&k))
{
for(i=1;i<=n;i++)
for(j=1;j<=m;j++)
scanf("%d",&a[i][j]);
memset(dp,0,sizeof(dp));
dp[0][1][0]=k;
for(i=1;i<=n;i++)
{
for(j=1;j<=m;j++)
{
tmp=dp[i-1][j][0]+dp[i][j-1][1];
if(a[i][j]==1)
{
dp[i][j][0]=tmp/2;
dp[i][j][1]=tmp-tmp/2;
}
else if(a[i][j]==-1)
{
dp[i][j][0]=tmp-tmp/2;
dp[i][j][1]=tmp/2;
}
else if(a[i][j]==0)
{
dp[i][j][0]=dp[i-1][j][0];
dp[i][j][1]=dp[i][j-1][1];
}
}
}
printf("%lld\n",dp[n][m][0]);
}
}