from collections import defaultdict
from collections import deque
M=int(input())
dic=defaultdict(list)
dat=[]
l=[[] for _ in range(M)]
for i in range(M):
    A,B,C=map(int,input().split())
    dat.append((A,B,C))
    l[i]=[[A,B],[B,C],[C,A]]
    dic[(A,B)].append(i)
    dic[(B,C)].append(i)
    dic[(A,C)].append(i)
edge=[[] for _ in range(M)]
for k in dic.keys():
    if len(dic[k]) >= 3:
        print("NO")
        exit()
    if len(dic[k]) == 1:
        continue
    p=dic[k][0]
    p2=dic[k][1]
    se=set(dat[p])&set(dat[p2])
    if len(l)==3:
        continue
    a,b=se
    #print(a,b,l[p],l[p2],int([a,b] in l[p] ),int( [a,b] in l[p2]))
    if int([a,b] in l[p] )^int( [a,b] in l[p2])==0:
        edge[p].append((p2,-1))
        edge[p2].append((p,-1))
    else:
        edge[p].append((p2,1))
        edge[p2].append((p,1))
#print(edge)
dq=deque([0])
di=[0 for _ in range(M)]
di[0]=1
while len(dq)!=0:
    p = dq.popleft()
    for e,o in edge[p]:
        if di[e]==0:
            di[e]=di[p]*o
            dq.append(e)
        else:
            if di[e]!=di[p]*o:
                print("NO")
                exit()
#print(di)
print("YES")