using System; using static System.Console; using System.Linq; using System.Collections.Generic; using System.Globalization; class Program { static int NN => int.Parse(ReadLine()); static int[] NList => ReadLine().Split().Select(int.Parse).ToArray(); static int[][] NArr(long n) => Enumerable.Repeat(0, (int)n).Select(_ => NList).ToArray(); static int[] NMi => ReadLine().Split().Select(c => int.Parse(c) - 1).ToArray(); static int[][] NMap(int n) => Enumerable.Repeat(0, n).Select(_ => NMi).ToArray(); static string[] SList(long n) => Enumerable.Repeat(0, (int)n).Select(_ => ReadLine()).ToArray(); static long[] LList(long n) => Enumerable.Repeat(0, (int)n).Select(_ => long.Parse(ReadLine())).ToArray(); public static void Main() { Solve(); } static void Solve() { var c = NList; var (n, m) = (c[0], c[1]); var s = SList(m); WriteLine(Filter(n, m, s) ? "Yes" : "No"); } static bool Filter(int n, int m, string[] s) { var set = new HashSet(); var minpop = n + 1; var minplist = new List(); for (var i = 0; i < m; ++i) { var tmp = 0; for (var j = 0; j < s[i].Length; ++j) tmp = tmp * 2 + s[i][j] - '0'; set.Add(tmp); var pc = Popcount(tmp); if (pc < minpop) { minplist = new List { tmp }; minpop = pc; } else if (pc == minpop) minplist.Add(tmp); } if (minplist.Count > 1) return false; if (minpop == 0) return false; var bitmax = 1 << n; for (var b = 0; b < bitmax; ++b) { if ((b & minplist[0]) == minplist[0]) { if (!set.Contains(b)) return false; } else if (set.Contains(b)) return false; } return true; } static int Popcount(long n) { var c = (n & 0x5555555555555555) + ((n>>1) & 0x5555555555555555); c = (c & 0x3333333333333333) + ((c>>2) & 0x3333333333333333); c = (c & 0x0f0f0f0f0f0f0f0f) + ((c>>4) & 0x0f0f0f0f0f0f0f0f); c = (c & 0x00ff00ff00ff00ff) + ((c>>8) & 0x00ff00ff00ff00ff); c = (c & 0x0000ffff0000ffff) + ((c>>16) & 0x0000ffff0000ffff); c = (c & 0x00000000ffffffff) + ((c>>32) & 0x00000000ffffffff); return (int)c; } }