Toad Ivan has m pairs of integers, each integer is between 1 and n, inclusive. The pairs are (a_1, b_1), (a_2, b_2), …, (a_m, b_m). 

He asks you to check if there exist two integers x and y (1 ≤ x < y ≤ n) such that in each given pair at least one integer is equal to x or y.

Input

The first line contains two space-separated integers n and m (2 ≤ n ≤ 300 000, 1 ≤ m ≤ 300 000) — the upper bound on the values of integers in the pairs, and the number of given pairs.

The next m lines contain two integers each, the i-th of them contains two space-separated integers a_i and b_i (1 ≤ a_i, b_i ≤ n, a_i ≠ b_i) — the integers in the i-th pair.

Output

Output "YES" if there exist two integers x and y (1 ≤ x < y ≤ n) such that in each given pair at least one integer is equal to x or y. Otherwise, print "NO". You can print each letter in any case (upper or lower).

Examples

Input


4 6
1 2
1 3
1 4
2 3
2 4
3 4


Output


NO


Input


5 4
1 2
2 3
3 4
4 5


Output


YES


Input


300000 5
1 2
1 2
1 2
1 2
1 2


Output


YES

Note

In the first example, you can't choose any x, y because for each such pair you can find a given pair where both numbers are different from chosen integers.

In the second example, you can choose x=2 and y=4.

In the third example, you can choose x=1 and y=2.
#import resource
import sys
#resource.setrlimit(resource.RLIMIT_STACK, [0x100000000, resource.RLIM_INFINITY])
#import threading
#threading.Thread(target=main).start()
#threading.stack_size(2**26)
#sys.setrecursionlimit(10**6)
mod=(10**9)+7
fact=[1]
for i in range(1,100001):
    fact.append((fact[-1]*i)%mod)
ifact=[0]*100001
ifact[100000]=pow(fact[100000],mod-2,mod)
for i in range(100000,0,-1):
    ifact[i-1]=(i*ifact[i])%mod
from sys import stdin, stdout
from bisect import bisect_left as bl
from bisect import bisect_right as br
import itertools
import math
import heapq
from random import randint as rn
from Queue import Queue as Q
def find(x):
    if(x!=p[x]):
        p[x]=find(p[x])
    return p[x]
def union(x,y):
    m=find(x)
    n=find(y)
    if(m!=n):
        if(r[m]>r[n]):
            p[n]=m
        elif(r[m]<r[n]):
            p[m]=n
        else:
            p[n]=m
            r[m]+=1
def modinv(n,p):
    return pow(n,p-2,p)
def ncr(n,r,p):
    t=((fact[n])*((ifact[r]*ifact[n-r])%p))%p
    return t
def ain():
    return map(int,sin().split())
def sin():
    return stdin.readline().strip()
def GCD(x,y):
    while(y):
        x, y = y, x % y
    return x
def isprime(x):
    if(x==1):
        return False
    elif(x<4):
        return True
    for i in range(2,int(math.sqrt(x))+1):
        if(x%i==0):
            return False
    return True
"""**************************************************************************"""
n,m=ain()
b=[]
for i in range(m):
    b.append(ain())
t1=[]
t2=[]
for i in range(1,m):
    if(b[i][0]!=b[0][0] and b[i][1]!=b[0][0]):
        t1.append(i)
    if(b[i][0]!=b[0][1] and b[i][1]!=b[0][1]):
        t2.append(i)
if(len(t1)==0 or len(t2)==0):
    print"YES"
    exit()
d=0
x1=b[t1[0]][0]
x2=b[t1[0]][1]
for i in range(1,len(t1)):
    x=t1[i]
    if(b[x][0]!=x1 and b[x][1]!=x1):
        d=1
        break
if(d==0):
    print"YES"
    exit()
d=0
for i in range(1,len(t1)):
    x=t1[i]
    if(b[x][0]!=x2 and b[x][1]!=x2):
        d=1
        break
if(d==0):
    print"YES"
    exit()
d=0
x1=b[t2[0]][0]
x2=b[t2[0]][1]
for i in range(1,len(t2)):
    x=t2[i]
    if(b[x][0]!=x1 and b[x][1]!=x1):
        d=1
        break
if(d==0):
    print"YES"
    exit()
d=0
for i in range(1,len(t2)):
    x=t2[i]
    if(b[x][0]!=x2 and b[x][1]!=x2):
        d=1
        break
if(d==0):
    print"YES"
    exit()
print"NO"
