#include #include #include using namespace std; int n,k,x1,x2,y1,y2; pair q[1000111]; int mvs[1000111]; bool TFO[1011][1011]; int qL = 0; vector< pair > moves; void getMoves() { moves.push_back(make_pair(1,2)); moves.push_back(make_pair(2,1)); moves.push_back(make_pair(-1,-2)); moves.push_back(make_pair(-2,-1)); moves.push_back(make_pair(-2,1)); moves.push_back(make_pair(2,-1)); moves.push_back(make_pair(1,-2)); moves.push_back(make_pair(-1,2)); } int grid[1011][1011]; int main() { freopen("chess.in","r",stdin); freopen("chess.out","w",stdout); //freopen("test.txt","r",stdin); getMoves(); int i,j; int nx,ny; scanf("%d %d %d %d %d %d",&n,&k,&x1,&y1,&x2,&y2); for (i=1;i<=n;i++) { for (j=1;j<=n;j++) { scanf("%d",&grid[i][j]); } } qL = 1; q[1] = make_pair(x1,y1); TFO[x1][y1] = true; mvs[1] = 0; int uk = 1; int len = -1; while(uk <= qL) { if (q[uk] == make_pair(x2,y2)) { len = mvs[uk]; break; } for (i=0;i= 1 && nx <= n && ny >= 1 && ny <= n) { if (grid[nx][ny] == 0) { if (!TFO[nx][ny]) { TFO[nx][ny] = true; qL++; q[qL] = make_pair(nx,ny); mvs[qL] = mvs[uk] + 1; } } } } uk++; } //printf("Len = %d\n",len); if (len == -1) printf("No\n"); else if (len > k) printf("No\n"); else if (len % 2 != k % 2) printf("No\n"); else printf("Yes\n"); return 0; }