from sys import stdin input = stdin.readline from collections import deque N, M = map(int, input().split()) G = [[] for _ in range(N)] GS = [set() for _ in range(N)] for _ in range(M): u, v = map(int, input().split()) u, v = u-1, v-1 G[u].append(v) G[v].append(u) GS[u].add(v) GS[v].add(u) que = deque() parent = [[] for _ in range(N)] for i in range(N): if len(GS[i]) == 3: que.append(i) parent[i] = list(GS[i]) order = [] while que: n = que.popleft() order.append(n) for v in G[n]: GS[v].remove(n) if len(GS[v]) == 3: que.append(v) parent[v] = list(GS[v]) order = order[::-1] ans = [-1]*N for i in range(3): ans[order[i]] = i for i in range(3, N): S = set(range(4)) for v in parent[order[i]]: S.remove(ans[v]) ans[order[i]] = S.pop() print("Yes") print(*[a+1 for a in ans])