n, m = map(int, input().split()) g = [[] for _ in range(n)] for _ in range(m): u, v = map(int, input().split()) u -= 1 v -= 1 g[u].append(v) g[v].append(u) deg = list(map(len, g)) exists = [True] * n vs = [] todo = [] for i in range(n): if deg[i] == 3: todo.append(i) pars = [[] for _ in range(n)] exists_cnt = n while exists_cnt >= 4: u = todo.pop() vs.append(u) exists[u] = False exists_cnt -= 1 for v in g[u]: if not exists[v]: continue pars[u].append(v) deg[v] -= 1 if deg[v] == 3: todo.append(v) assert exists_cnt == 3 nxt = 1 ans = [0] * n for i in range(n): if exists[i]: ans[i] = nxt nxt += 1 for v in reversed(vs): assert len(pars[v]) == 3 ans[v] = 10 - sum(ans[p] for p in pars[v]) print('Yes') print(*ans)