#include <bits/stdc++.h>
using namespace std;
const long long MOD = 1e9 + 7;
const long long INF = 1e18;
const long long MAX = 1e5 + 5;
vector<string> all_str;
long long n, k;
void substrings(string s = "") {
  if (s.length() == k) {
    all_str.push_back(s);
    return;
  }
  string t1 = s + '0';
  substrings(t1);
  string t2 = s + '1';
  substrings(t2);
}
bool possible(string cur, string str) {
  for (long long i = 0; i < k; i++) {
    if ((str[i] - '0') + (cur[i] - '0') > 1) return 0;
  }
  return 1;
}
int main() {
  ios_base::sync_with_stdio(false);
  cin.tie(NULL);
  cout.tie(NULL);
  cin >> n >> k;
  long long pr[n][k];
  bool zero_sum = false;
  map<string, long long> cnt;
  for (long long i = 0; i < n; i++) {
    long long sum = 0;
    string s;
    for (long long j = 0; j < k; j++) {
      cin >> pr[i][j];
      sum += pr[i][j];
      s += (pr[i][j] + '0');
    }
    if (sum == 0) zero_sum = true;
    cnt[s]++;
  }
  if (zero_sum) {
    cout << "YES\n";
    return 0;
  }
  substrings();
  for (long long i = 0; i < n; i++) {
    string cur(k, '0');
    for (long long j = 0; j < k; j++) {
      if (pr[i][j]) cur[j] = '1';
    }
    for (auto str : all_str) {
      if (possible(cur, str)) {
        if (cnt[str]) {
          cout << "YES";
          return 0;
        }
      }
    }
  }
  cout << "NO";
  return 0;
}
