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 java.awt.Adjustable;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Stack;
import java.util.StringTokenizer;

public class codeforcesreturn {
	static ArrayList<Integer>[] adjlist;
	static int[][] adjmatrix;
	static int[][] adjmatrix2;
	static boolean[] vis;
	static boolean[] intialvis;
	static boolean[] vis2;
	static int[] counter;
	static int V, E;
	static Stack<Integer> st;
	static ArrayList<Integer> arrylist;
	static boolean flag;
	static int[] dx = new int[] { 1, -1, 0, 0 };
	static int[] dy = new int[] { 0, 0, 1, -1 };
	static int[] Arr;
	static PrintWriter pw;

	static boolean check(int a, int b, int c, int d) {
		return (a!=d&&a!=c&&b!=c&&b!=d);
	}

	static boolean check(int a, int b, int[] Arrx, int[] Arry) {
		for (int i = 0; i < Arrx.length; i++)
			if (check(a, b, Arrx[i], Arry[i]))
				return false;

		return true;
	}

	public static void main(String[] args) throws IOException, InterruptedException {
		pw = new PrintWriter(System.out);
		Scanner sc = new Scanner(System.in);
		 V = sc.nextInt();
		int m = sc.nextInt();
		int[] Arrx = new int[m];
		int[] Arry = new int[m];
		for (int i = 0; i < m; i++) {
			Arrx[i] = sc.nextInt();
			Arry[i] = sc.nextInt();
		}
		int a = 0;
		int b = 0;
		int c = 0;
		int d = 0;
		for (int i = 1; i < m; i++) {
			if (check(Arrx[i-1], Arry[i-1], Arrx[i], Arry[i])) {
				a = Arrx[i-1];
				b = Arry[i-1];
				c = Arrx[i];
				d = Arry[i];
			}
		}
		if (a == 0)
			System.out.println("Yes");
		else if (check(a, c, Arrx, Arry))
			System.out.println("Yes");
		else if (check(a, d, Arrx, Arry))
			System.out.println("Yes");
		else if (check(b, c, Arrx, Arry))
			System.out.println("Yes");
		else if (check(b, d, Arrx, Arry))
			System.out.println("Yes");
		else 
			System.out.println("No");
	
	}

	static class Scanner {
		StringTokenizer st;
		BufferedReader br;

		public Scanner(InputStream s) {
			br = new BufferedReader(new InputStreamReader(s));
		}

		public String next() throws IOException {
			while (st == null || !st.hasMoreTokens())
				st = new StringTokenizer(br.readLine());
			return st.nextToken();
		}

		public int nextInt() throws IOException {
			return Integer.parseInt(next());
		}

		public long nextLong() throws IOException {
			return Long.parseLong(next());
		}

		public String nextLine() throws IOException {
			return br.readLine();
		}

		public double nextDouble() throws IOException {
			String x = next();
			StringBuilder sb = new StringBuilder("0");
			double res = 0, f = 1;
			boolean dec = false, neg = false;
			int start = 0;
			if (x.charAt(0) == '-') {
				neg = true;
				start++;
			}
			for (int i = start; i < x.length(); i++)
				if (x.charAt(i) == '.') {
					res = Long.parseLong(sb.toString());
					sb = new StringBuilder("0");
					dec = true;
				} else {
					sb.append(x.charAt(i));
					if (dec)
						f *= 10;
				}
			res += Long.parseLong(sb.toString()) / f;
			return res * (neg ? -1 : 1);
		}

		public boolean ready() throws IOException {
			return br.ready();
		}

	}

}
