def main(): n, m = list(map(int, input().split())) 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 = [i for i in range(n)] I.sort(key = lambda x: -A[x]) 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()