#yuki228 def around(pos): ls=[] if pos>=4: ls.append(pos-4) if pos<=11: ls.append(pos+4) if pos%4!=0: ls.append(pos-1) if pos%4!=3: ls.append(pos+1) return ls def check(ls): pos=ls.index('0') g=goal[pos] for p in around(pos): if ls[p]==g: ls[p],ls[pos]=ls[pos],ls[p] return True return False ls=[] for i in xrange(4): ls+=raw_input().split() goal=[str((i+1)%16) for i in range(16)] while True: if ls==goal: print 'Yes' break if not check(ls): print 'No' break