#include typedef long long ll; using namespace std; int INF = 1LL << 30; int MOD = 1e9+7; main(){ int A[4][4],table[4][4] = {};//座標が合わないなら1 for(int i = 0;i < 4;i++)for(int j = 0;j < 4;j++)cin >> A[i][j]; int x,y; for(int i = 0;i < 4;i++)for(int j = 0;j < 4;j++){ if(A[i][j] && A[i][j] != i*4 + j + 1)table[i][j] = 1; if(A[i][j] == 0){ y = i,x = j; } } //movable bool movable = 0; for(int i = 0;i < 4;i++)for(int j = 0;j < 4;j++)movable |= table[i][j]; while(movable){ bool ismoved = 0; int dx[] = {0,0,1,-1}, dy[] = {1,-1,0,0}; for(int i = 0;i < 4;i++){ int nx = x + dx[i], ny = y + dy[i]; if(nx < 0 || nx >= 4 || ny < 0 || ny >= 4)continue; if(table[ny][nx] && (A[ny][nx] == y*4 + x + 1)){ swap(A[ny][nx], A[y][x]); table[ny][nx] = 0; y = ny,x = nx; ismoved = 1; break; } } /* cout << y << " " << x << endl; for(int i = 0;i < 4;i++){ for(int j = 0;j < 4;j++){ cout << table[i][j] << " "; }cout << endl; } for(int i = 0;i < 4;i++){ for(int j = 0;j < 4;j++){ cout << A[i][j] << " "; }cout << endl; } */ movable = 0; for(int i = 0;i < 4;i++)for(int j = 0;j < 4;j++)movable |= table[i][j]; if(!ismoved)movable = 0; } //judge bool ok = 1; for(int i = 0;i < 4;i++)for(int j = 0;j < 4;j++){ if(A[i][j] && A[i][j] != i*4 + j + 1)ok = 0; } if(ok)cout << "Yes" << endl; else cout << "No" << endl; }