#!/usr/bin/env/ python # -*- coding:utf-8 -*- import numpy as np import Queue N = raw_input() N = int(N) mat = np.zeros([100,100], dtype=np.int8) for i in range(N): ra,ca,rb,cb = raw_input().split() ra = int(ra) ca = int(ca) rb = int(rb) cb = int(cb) mat[ra-1,ca-1] += 1 mat[rb-1,cb-1] += 1 YES_NO = True flag = np.zeros([100,100],dtype=bool) q = Queue.Queue() exit() for x in range(100): for y in range(100): if flag[x][y] == False and mat[x][y] > 0: rc = [] edge = 0 q.put([x,y]) rc.append([x,y]) flag[x][y] = True edge += mat[x][y] while not q.empty(): pos = q.get() tmpx = pos[0] tmpy = pos[1] if flag[tmpx-1][tmpy] == False and mat[tmpx-1][tmpy] > 0 and tmpx>0: q.put([tmpx-1,tmpy]) flag[tmpx-1][tmpy] = True rc.append([tmpx-1,tmpy]) edge += mat[tmpx-1][tmpy] if flag[tmpx+1][tmpy] == False and mat[tmpx+1][tmpy] > 0 and tmpx<100: q.put([tmpx+1,tmpy]) flag[tmpx+1][tmpy] = True rc.append([tmpx+1,tmpy]) edge += mat[tmpx+1][tmpy] if flag[tmpx][tmpy-1] == False and mat[tmpx][tmpy-1] > 0 and tmpy>0: q.put([tmpx,tmpy-1]) flag[tmpx][tmpy-1] = True rc.append([tmpx,tmpy-1]) edge += mat[tmpx][tmpy-1] if flag[tmpx][tmpy+1] == False and mat[tmpx][tmpy+1] > 0 and tmpy<100: q.put([tmpx,tmpy+1]) flag[tmpx][tmpy+1] = True rc.append([tmpx,tmpy+1]) edge += mat[tmpx][tmpy+1] edge = edge / 2 if edge > len(rc): YES_NO = False if YES_NO: print 'YES' else: print 'NO'