def main(): n, m = list(map(int, input().split())) if n == 3: print("Yes") print(1, 2, 3) return node = [[] for _ in range(n)] A = [0] * n for _ in range(m): u, v = list(map(lambda x: int(x)-1, input().split())) node[u].append(v) node[v].append(u) A[u] += 1; A[v] += 1 I = [] S = [i for i in range(n) if A[i] == 3] while S: now = S.pop() I.append(now) for nxt in node[now]: if 3 < A[nxt]: A[nxt] -= 1 if A[nxt] == 3: S.append(nxt) C = [0 for _ in range(n)] B = [-1] * n for i in I: for j in range(4): if not C[i] >> j & 1: B[i] = j+1 for k in node[i]: C[k] |= 1 << j break else: assert 0 print("Yes") print(*B) main()