#include using namespace std; using ll = long long; int main(){ vector> used(4, vector(4)); vector> A(4, vector(4)), B(4, vector(4)); int sy, sx; for(int i = 0; i < 4; i++){ for(int j = 0; j < 4; j++){ cin >> A[i][j]; B[i][j] = (4 * i + j + 1) & 15; if(A[i][j] == 0)sy = i, sx = j; } } function dfs = [&](int y, int x){ if(A == B)return true; used[y][x] = true; for(int i = 0; i < 4; i++){ int dy = (i == 0) - (i == 1); int dx = (i == 2) - (i == 3); if(y + dy < 0 || y + dy >= 4 || x + dx < 0 || x + dx >= 4)continue; if(used[y + dy][x + dx])continue; swap(A[y][x], A[y + dy][x + dx]); if(dfs(y + dy, x + dx))return true; swap(A[y][x], A[y + dy][x + dx]); } used[y][x] = false; return false; }; cout << (dfs(sy, sx) ? "Yes" : "No") << endl; }