#include #define REP(i,n,N) for(int i=(n);i<(int)N;i++) #define p(s) cout<<(s)< zero; string ans="No"; REP(i,0,4) REP(j,0,4) { cin>>a[i][j]; if(a[i][j]==0) zero={i,j}; } while(1){ bool flag=true; REP(i,0,4) REP(j,0,4) { if(i!=3 || j!=3) if(a[i][j]!=i*4+j+1) flag=false; } if(flag) { ans="Yes"; break; } REP(i,0,4){ int nx=zero.F+dx[i],ny=zero.S+dy[i]; if(!ck(nx,0,4)||!ck(ny,0,4)) continue; if(zero.F*4+zero.S+1==a[ny][nx]){ swap(a[zero.F][zero.S],a[ny][nx]); zero={ny,nx}; flag=true; break; } } if(!flag) break; } p(ans); return 0; }