#include <bits/stdc++.h>
using namespace std;
struct zero {
  int nxt, to;
} edge[210000 << 1];
int head[210000], tot = 0;
int n, k, ans[210000];
int plk, poi, f[210000], dep[210000], kl[210000];
bool vis[210000];
void add_edge(int a, int b) {
  edge[++tot] = (zero){head[a], b};
  head[a] = tot;
}
void dfspl(int x, int fa) {
  for (int i = head[x]; i; i = edge[i].nxt) {
    int to = edge[i].to;
    if (to == fa) continue;
    ans[to] = 3 - ans[x];
    dfspl(to, x);
  }
}
void aux(int x, int fa) {
  if (dep[x] > dep[plk]) plk = x;
  for (int i = head[x]; i; i = edge[i].nxt) {
    int to = edge[i].to;
    if (to == fa) continue;
    dep[to] = dep[x] + 1;
    aux(to, x);
  }
}
void dfs1(int x, int fa) {
  if (dep[x] > dep[poi]) poi = x;
  kl[x] = dep[x];
  for (int i = head[x]; i; i = edge[i].nxt) {
    int to = edge[i].to;
    if (to == fa) continue;
    dep[to] = dep[x] + 1, f[to] = x;
    dfs1(to, x);
    kl[x] = max(kl[x], kl[to]);
  }
}
void solve(int x, int now, int op) {
  ans[x] = now;
  for (int i = head[x]; i; i = edge[i].nxt) {
    int to = edge[i].to;
    if (vis[to] || to == f[x]) continue;
    solve(to, (now + op - 1 + k) % k + 1, op);
  }
}
int main() {
  scanf("%d%d", &n, &k);
  for (int i = 1; i < n; i++) {
    int a, b;
    scanf("%d%d", &a, &b);
    add_edge(a, b), add_edge(b, a);
  }
  if (k == 2) {
    ans[1] = 1;
    dfspl(1, 0);
    puts("Yes");
    for (int i = 1; i <= n; i++) printf("%d ", ans[i]);
    return 0;
  }
  dep[1] = 1, plk = 1;
  aux(1, 0);
  dep[plk] = 1, poi = plk;
  dfs1(plk, 0);
  int poss = poi;
  int cnt = 1;
  while (poss) {
    vis[poss] = true;
    ans[poss] = cnt;
    for (int i = head[poss]; i; i = edge[i].nxt) {
      int to = edge[i].to;
      if (to == f[poss] || vis[to]) continue;
      if (kl[to] >= k && (kl[to] + dep[poi] - 2 * dep[poss] + 1 >= k))
        return puts("NO"), 0;
      if (kl[to] >= k)
        solve(to, (cnt + k - 2) % k + 1, -1);
      else
        solve(to, cnt % k + 1, 1);
    }
    cnt = cnt % k + 1;
    poss = f[poss];
  }
  puts("Yes");
  for (int i = 1; i <= n; i++) printf("%d ", ans[i]);
  puts("");
}
