#include <bits/stdc++.h>
using namespace std;
typedef vector<int> vec;
typedef vector<vec> mat;

bool gauss_jordan(const mat& A,const vec& b){
  int n=A.size();
  mat B(n,vec(n+1));
  for(int i=0;i<n;i++)
    for(int j=0;j<n;j++)B[i][j]=A[i][j];
  
  for(int i=0;i<n;i++)B[i][n]=b[i];
  
  for(int i=0;i<n;i++){
    int pivot=i;
    for(int j=i;j<n;j++)if(abs(B[j][i])>abs(B[pivot][i]))pivot=j;
    swap(B[i],B[pivot]);
    for(int j=0;j<n;j++)
      if(i!=j&&B[j][i])
	for(int k=i;k<=n;k++)B[j][k]=(B[j][k]+B[i][k])%2;
  }
  for(int i=0;i<n;i++)if(B[i][i]==0&&B[i][n]==1) return 0;
  return 1;
}

int h,w,d,mp[25][25];
int main(){
  while(1){
    cin>>w>>h>>d;
    if(!w&&!h&&!d)break;
    mat A(h*w,vec(h*w));
    vec B(h*w);
    for(int i=0;i<h;i++)
      for(int j=0;j<w;j++)cin>>mp[i][j];
    
    for(int i=0;i<h;i++)
      for(int j=0;j<w;j++){
	int idx=w*i+j;
	B[idx] = mp[i][j];
	for(int y=0;y<h;y++)
	  for(int x=0;x<w;x++){
	    int t = abs(i-y)+abs(j-x);
	    if(t==d||t==0)A[idx][w*y+x]=1;				
	  }
      }
    cout<<gauss_jordan(A,B)<<endl;
  }
  return 0;
}