#include <bits/stdc++.h>
const int maxn = 200005, maxm = maxn << 1;
int n, m, e, s1, s2, s, maxx, col, flg, mid;
int start[maxn], to[maxm], then[maxm], dep[maxn], f[maxn], ans[maxn],
    flen[maxn], slen[maxn];
inline void add(int x, int y) { then[++e] = start[x], start[x] = e, to[e] = y; }
void dfs(int x, int last) {
  f[x] = last, dep[x] = dep[last] + 1;
  flen[x] = slen[x] = 0;
  if (dep[x] > maxx) maxx = dep[x], s = x;
  for (int i = start[x]; i; i = then[i]) {
    int y = to[i];
    if (y == last) continue;
    dfs(y, x);
  }
}
void getlen(int x, int last) {
  for (int i = start[x]; i; i = then[i]) {
    int y = to[i];
    if (y == last || ans[y]) continue;
    getlen(y, x);
    if (flen[y] + 1 > flen[x])
      slen[x] = flen[x], flen[x] = flen[y] + 1;
    else if (flen[y] + 1 > slen[x])
      slen[x] = flen[y] + 1;
    if (slen[y] + 1 > slen[x]) slen[x] = slen[y] + 1;
  }
}
void solve(int x, int c, int d, int t) {
  ans[x] = c;
  c = (c + t + m - 1) % m + 1;
  for (int i = start[x]; i; i = then[i]) {
    int y = to[i];
    if (ans[y] != 0) continue;
    solve(y, c, d + 1, t);
  }
}
int main() {
  scanf("%d%d", &n, &m);
  for (int i = 1; i < n; i++) {
    int x, y;
    scanf("%d%d", &x, &y);
    add(x, y), add(y, x);
  }
  maxx = -1000000000, dfs(1, 0), s1 = s;
  maxx = -1000000000, dfs(s, 0), s2 = s;
  if (m == 2) {
    puts("Yes");
    for (int i = 1; i <= n; i++)
      printf("%d%c", dep[i] % 2 + 1, i == n ? '\n' : ' ');
    return 0;
  }
  for (int i = s2; i != 0; i = f[i]) {
    col = col % m + 1;
    if ((dep[s1] + dep[s2]) / 2 == dep[i]) mid = i;
    ans[i] = col;
  }
  for (int i = s2; i != 0; i = f[i]) {
    getlen(i, 0);
    if (ans[i] && flen[i] && dep[i] + flen[i] >= m &&
        (dep[s2] - dep[i] + 1) + flen[i] >= m) {
      puts("No");
      return 0;
    }
  }
  for (int i = 1; i <= n; i++)
    if (flen[i] + slen[i] + 1 >= m) {
      puts("No");
      return 0;
    }
  for (int i = s2; i != mid; i = f[i]) solve(i, ans[i], 1, -1);
  for (int i = mid; i != 0; i = f[i]) solve(i, ans[i], 1, 1);
  puts("Yes");
  for (int i = 1; i <= n; i++) printf("%d%c", ans[i], i == n ? '\n' : ' ');
  return 0;
}
