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.
"""
https://codeforces.com/contest/1169/problem/B

Toad Ivan has m pairs of integers, each integer is between 1 and n, inclusive.
The pairs are (a1, b1), (a2, b2), …, (am, bm).

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.
"""

"""
Accepted
Time Complexity : O(n).
Space Complexity : O(1).
Solution Explantion:
    No matter what, the solution will contain an x or y from the first pair.
    Then we look for the first pair that does not contain that x or y and check to see
    if the elements of that pair (x1, y1) satisfy the condition that each other pair
    has one of (x or (x1 or y1)) or (y or (x1 or y1)).
"""
from sys import stdin, stdout


def find_union_universal_vertex(edges) -> str:
    def edge_to_x_or_y(x: int, y: int) -> bool:
        for edge in edges:
            if edge[0] != x and edge[0] != y and edge[1] != x and edge[1] != y:
                return False

        return True

    for x in edges[0]:
        if edge_to_x_or_y(x, 0):
            return "YES"

        for edge in edges:
            if edge[0] != x and edge[1] != x:
                if edge_to_x_or_y(x, edge[0]) or edge_to_x_or_y(x, edge[1]):
                    return "YES"
                break

    return "NO"


if __name__ == "__main__":
    value_upperbound, n = map(int, stdin.readline().rstrip().split(" "))
    pairs = []
    for _ in range(n):
        pairs.append(stdin.readline().rstrip().split(" "))
    stdout.write(find_union_universal_vertex(pairs) + "\n")
