#include using namespace std; typedef pair P; int dx[4]={-1,1,0,0}; int dy[4]={0,0,-1,1}; int A[4][4]; int S[4][4]; void solve(){ queue

que; int k=1; for(int i=0;i<4;i++){ for(int j=0;j<4;j++){ S[i][j]=k; k++; } } S[3][3]=0; que.push({3,3}); while(!que.empty()){ P q=que.front(); que.pop(); int x=q.first; int y=q.second; if(A[x][y]==0&&S[x][y]==0){ break; } for(int i=0;i<4;i++){ int nx=x+dx[i]; int ny=y+dy[i]; if(nx<0||ny<0||nx>3||ny>3) continue; if(A[x][y]==S[nx][ny]){ que.push({nx,ny}); S[x][y]=A[x][y]; S[nx][ny]=0; break; } } } } int main(){ for(int i=0;i<4;i++){ for(int j=0;j<4;j++){ cin >> A[i][j]; } } solve(); for(int i=0;i<4;i++){ for(int j=0;j<4;j++){ if(S[i][j]!=A[i][j]){ cout << "No" << endl; return 0; } } } cout << "Yes" << endl; }