func_code_string: #include <bits/stdc++.h>   using namespace std;   const int N = 200005;   vector<int> v[N];   int n, kk;   int dis[N], ans[N];   void dfs1(int pos, int fa) {     for (auto &i : v[pos])       if (i != fa) dfs1(i, pos), dis[pos] = max(dis[pos], dis[i]);     ++dis[pos];   }   bool dfs2(int pos, int fa, const multiset<int, greater<int>> &mt) {     multiset<int, greater<int>> d;     int mx = 0;     for (auto &i : v[pos])       if (i != fa)         d.insert(dis[i]);       else         mx = 1;     bool fs = 1;     for (auto &i : mt) {       if (i == dis[pos] && fs) {         fs = 0;         continue;       }       mx = i + 1;       break;     }     if (mx) d.insert(mx);     while (d.size() > 3) d.erase(prev(d.end()));     if (d.size() > 2 && *next(d.begin()) + *next(next(d.begin())) >= kk - 1) {       cout <<  No  << endl;       return 0;     }     for (auto &i : v[pos])       if (i != fa && !dfs2(i, pos, d)) return 0;     return 1;   }   int dep[N], f[N];   void dfs(int pos, int fa) {     dep[pos] = dep[fa] + 1;     f[pos] = fa;     for (auto &i : v[pos])       if (i != fa) dfs(i, pos);   }   void dfs3(int pos, int fa, int cur, int dd) {     ans[pos] = cur;     for (auto &i : v[pos])       if (i != fa) dfs3(i, pos, (cur + dd + kk) % kk, dd);   }   int main() {     ios::sync_with_stdio(false);     cin >> n >> kk;     int t1, t2;     for (int i = 1; i < n; i++) {       cin >> t1 >> t2;       v[t1].push_back(t2);       v[t2].push_back(t1);     }     dfs1(1, 0);     if (kk != 2 && !dfs2(1, 0, {})) return 0;     cout <<  Yes  << endl;     if (kk == 2) {       dfs3(1, 0, 0, 1);       for (int i = 1; i <= n; i++) cout << ans[i] + 1 <<    ;       return 0;     }     dfs(1, 0);     t1 = max_element(dep + 1, dep + n + 1) - dep;     dfs(t1, 0);     t2 = max_element(dep + 1, dep + n + 1) - dep;     vector<int> d{t2};     while (f[t2]) d.push_back(t2 = f[t2]);     int mid = (d.size() + 1) / 2 - 1;     dfs3(d[mid], d[mid + 1], mid % kk, -1);     dfs3(d[mid + 1], d[mid], (mid + 1) % kk, 1);     for (int i = 1; i <= n; i++) cout << ans[i] + 1 <<    ;     return 0;   }   