def dfs(x,y): if all(a[i] == goal[i] for i in range(4)): return True for nx,ny in [(x-1,y),(x+1,y),(x,y+1),(x,y-1)]: if 0 <= nx < 4 and 0 <= ny < 4 and used[a[nx][ny]] == 0: c = a[nx][ny] used[c] = 1 a[x][y], a[nx][ny] = c, 0 if dfs(nx,ny): return True a[x][y], a[nx][ny] = 0, c used[c] = 0 return False used = [0]*16 goal = [list(map(int,input().split())) for _ in range(4)] a = [list(range(4*i+1,4*(i+1)+1)) for i in range(4)] a[3][3] = 0 print("Yes" if dfs(3,3) else "No")