import sys from collections import deque def main(): V, D = map(int, sys.stdin.readline().split()) E = [] for _ in range(V): row = sys.stdin.readline().strip() E.append([int(c) for c in row]) # Check outdegree for i in range(V): if sum(E[i]) == 0: print("No") return # Build adjacency list for undirected graph adj = [[] for _ in range(V)] for i in range(V): for j in range(V): if E[i][j] == 1: adj[i].append(j) # Check connectivity using BFS visited = [False] * V q = deque() q.append(0) visited[0] = True while q: u = q.popleft() for v in adj[u]: if not visited[v]: visited[v] = True q.append(v) if not all(visited): print("No") return # Check bipartiteness using BFS color = [-1] * V is_bipartite = True for i in range(V): if color[i] == -1: q = deque() q.append(i) color[i] = 0 while q: u = q.popleft() for v in adj[u]: if color[v] == -1: color[v] = color[u] ^ 1 q.append(v) elif color[v] == color[u]: is_bipartite = False break if not is_bipartite: break if not is_bipartite: break if is_bipartite: print("No") return print("Yes") if __name__ == "__main__": main()