#include int a[6][6]; int complete(); int main(void) { int i, j, x, y; for(j = 0; j < 6; j++) { for(i = 0; i < 6; i++) { a[i][j] = 0; // 番兵 } } for(j = 1; j <= 4; j++) { for(i = 1; i <= 4; i++) { scanf("%d", &a[i][j]); if(a[i][j] == 0) { x = i; y = j; } // x, yに空きマスの位置をメモ if(a[i][j] == (i - 1) + 4 * (j - 1) + 1) { a[i][j] = 0; } // 正しい位置にあるものを0に } } int dx[4] = {+1, -1, 0, 0}; int dy[4] = { 0, 0, +1, -1}; while(1) { int flag = 0; for(i = 0; i < 4; i++) { if(a[ x + dx[i] ][ y + dy[i] ] == (x - 1) + 4 * (y - 1) + 1) { a[ x + dx[i] ][ y + dy[i] ] = 0; x += dx[i]; y += dy[i]; flag = 1; continue; } } if(!flag) { break; } } int flag = 1; for(j = 1; j <= 4; j++) { for(i = 1; i <= 4; i++) { if(a[i][j] > 0) { flag = 0; break; } } } printf("%s\n", flag ? "Yes" : "No"); return 0; }