from collections import defaultdict,deque import sys,heapq,bisect,math,itertools,string,queue,copy,time sys.setrecursionlimit(10**8) INF = float('inf') mod = 10**9+7 eps = 10**-7 def inp(): return int(sys.stdin.readline()) def inpl(): return list(map(int, sys.stdin.readline().split())) def inpl_str(): return list(sys.stdin.readline().split()) import numpy as np H,W = inpl() AA = np.array([list(map(int,list(input()))) for _ in range(H)]) for x in range(W): tmp = sum(AA[:, x]) if tmp == H or tmp == 0: break else: print("YES") sys.exit() for y in range(H): tmp = sum(AA[y, :]) if tmp == W or tmp == 0: break else: print("YES") sys.exit() print("NO")