using System; using static System.Console; using System.Linq; using System.Collections.Generic; class Program { static int NN => int.Parse(ReadLine()); static string[] SList(long n) => Enumerable.Repeat(0, (int)n).Select(_ => ReadLine()).ToArray(); public static void Main() { Solve(); } static void Solve() { var n = NN; var m = NN; var s = SList(m); WriteLine(T0(n, m, s) ? "Yes" : "No"); } static bool T0(int n, int m, string[] s) { var b = new Bitset[n]; for (var i = 0; i < b.Length; ++i) { b[i] = new Bitset(n); b[i].Set(i, 1); } foreach (var si in s) { var zero = new Bitset(n); var one = new Bitset(n); for (var i = 0; i < si.Length; ++i) { if (si[i] == '0') zero.Set(i, 1); else one.Set(i, 1); } for (var i = 0; i < si.Length; ++i) { if (si[i] == '0') b[i].Or(one); else b[i].Or(zero); } } foreach (var bi in b) { if (bi.Expand().Any(i => i == 0)) return false; } return true; } class Bitset { int _length; ulong[] data; public Bitset(int length) { _length = length; data = new ulong[(length + 63) / 64]; } public void Set(int pos, int val) { if (val == 0) data[pos / 64] = (data[pos / 64] ^ ((ulong)1 << (pos % 64))); else data[pos / 64] = (data[pos / 64] | ((ulong)1 << (pos % 64))); } public void Or(Bitset b) { for (var i = 0; i < data.Length; ++i) data[i] = data[i] | b.data[i]; } public int[] Expand() { var ans = new int[_length]; for (var i = 0; i < _length; ++i) ans[i] = (int)((data[i / 64] >> (i % 64)) % 2); return ans; } } }