#include <cstdio> #include <cstring> #include <algorithm> using namespace std; const int maxn=800+1; const int mod=1000000007; int dp[maxn][maxn][16][2],a[maxn][maxn],n, m, k; int main(){ scanf("%d%d%d",&n,&m,&k); k++; for(int i=1;i<=n;i++) for(int j=1;j<=m;j++){ scanf("%d",&a[i][j]); dp[i][j][(a[i][j])%k][0]=1; } for(int i=1;i<=n;i++) for(int j=1;j<=m;j++) for(int l=0;l<k;l++){ dp[i][j][l][1]=(dp[i][j][l][1]+dp[i-1][j][((l+a[i][j])%k+k)%k][0]+dp[i][j-1][((l+a[i][j])%k+k)%k][0])%mod; dp[i][j][l][0]=(dp[i][j][l][0]+dp[i-1][j][((l-a[i][j])%k+k)%k][1]+dp[i][j-1][((l-a[i][j])%k+k)%k][1])%mod; } long long ans=0; for(int i=1;i<=n;i++) for(int j=1;j<=m;j++)ans=(ans+dp[i][j][0][1])%mod; printf("%lld",ans); return 0; }