#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std; uint64_t dfs(array b,uint16_t m,char x,char y){ if(is_sorted(b.begin(),b.end()-1)&&b[15]==0){ return true; } bool ret=false; int d[][2]={{1,0},{-1,0},{0,1},{0,-1}}; for(int i=0;i<4&&!ret;i++){ char nx=x+d[i][0],ny=y+d[i][1]; if(0<=nx&&nx<4&&0<=ny&&ny<4&&(m&(1< nb(b); uint16_t nm=m|(1< t; char x,y; for(int i=0;i<16;i++){ -scanf("%d",&t[i]); if(t[i]==0){ y=i>>2; x=i&3; } } bool ret=dfs(t,0,x,y); puts(ret?"Yes":"No"); return 0; }