#include using namespace std; using ll = long long; #define rep(i, n) for (int i = 0; i < (n); i++) int main() { ios::sync_with_stdio(false); cin.tie(nullptr); int n, m; cin >> n >> m; vector deg(n); vector> g(n); rep(i, m) { int u, v; cin >> u >> v; --u, --v; g[u].push_back(v); g[v].push_back(u); deg[u]++; deg[v]++; } queue que; rep(i, n) { if (deg[i] == 3) que.push(i); } vector deleted(n, false); vector> nei(n); vector order; int cnt = n; while (cnt > 3) { if (que.empty()) { cout << "No\n"; return 0; } int v = que.front(); que.pop(); if (deleted[v] || deg[v] != 3) continue; deleted[v] = true; cnt--; order.push_back(v); for (int to : g[v]) { if (!deleted[to]) { nei[v].push_back(to); deg[to]--; if (deg[to] == 3) que.push(to); } } } vector ans(n, -1); int c = 1; rep(i, n) { if (!deleted[i]) ans[i] = c++; } while (!order.empty()) { int v = order.back(); order.pop_back(); set st = {1, 2, 3, 4}; for (int to : nei[v]) { st.erase(ans[to]); } ans[v] = *st.begin(); } cout << "Yes\n"; rep(i, n) { if (i) cout << ' '; cout << ans[i]; } cout << '\n'; }