import static java.lang.Math.*; import static java.util.Arrays.*; import java.util.*; public class Main { Scanner sc = new Scanner(System.in); Random rand = new Random(7483971); long MOD = 1000000007; boolean check(long[][] a) { int n = a.length; for (int p = 0; p < n; p++) { int pi = p; while (pi < n && a[pi][p] == 0) pi++; if (pi == n) return false; long[] t1 = a[pi]; a[pi] = a[p]; a[p] = t1; for (int i = p + 1; i < n; i++) { for (int j = p + 1; j < n; j++) { a[i][j] = ((a[i][j] * a[p][p] - a[p][j] * a[i][p]) % MOD + MOD) % MOD; } } } return true; } void run() { while (sc.hasNext()) { int n = sc.nextInt(), m = sc.nextInt(); boolean[][] g = new boolean[n][n]; for (int i = 0; i < m; i++) { int u = sc.nextInt() - 1, v = sc.nextInt() - 1; g[u][v] = g[v][u] = true; } boolean ok = false; for (int r = 0; r < 3; r++) { long[][] a = new long[n][n]; for (int i = 0; i < n; i++) { for (int j = 0; j < n; j++) if (g[i][j]) { if (i < j || i == 0 || j == 0) a[i][j] = rand.nextInt((int)MOD); else a[i][j] = -a[j][i]; } } if (check(a)) { ok = true; break; } } System.out.println(ok ? "Yes" : "No"); } } void debug(Object...os) { System.err.println(deepToString(os)); } public static void main(String[] args) { new Main().run(); } }