#include <bits/stdc++.h>
using namespace std;
struct msg {
  long long lstl = 0;
  long long lstr = 0;
  long long num = 0;
};
int32_t main() {
  long long n, k;
  cin >> n >> k;
  long long a[n];
  msg ms[n];
  for (long long i = 0; i < n; i++) {
    cin >> a[i];
  }
  for (long long i = 0; i < n; i++) {
    if (a[i] == 0) {
      ms[i].lstl = max(i - k, 0LL);
      ms[i].lstr = min(i + k, n - 1);
      ms[i].num = 1 + ms[i].lstr - ms[i].lstl;
    } else {
      ms[i].lstl = max(i - k, 0LL);
      ms[i].lstr = min(i + k, n - 1);
      long long nmr, nml;
      if (ms[i].lstl <= ms[a[i] - 1].lstr) {
        if (ms[a[i] - 1].lstr < i) {
          nml = k - (ms[a[i] - 1].lstr - ms[i].lstl + 1);
        } else {
          nml = 0;
        }
      } else {
        nml = i - ms[i].lstl;
      }
      if (ms[a[i] - 1].lstr < i) {
        nmr = ms[i].lstr - i + 1;
      } else if (ms[a[i] - 1].lstr == i) {
        nmr = ms[i].lstr - i;
      } else {
        nmr = ms[i].lstr - ms[a[i] - 1].lstr;
      }
      ms[i].num = nmr + nml + ms[a[i] - 1].num;
    }
  }
  for (long long i = 0; i < n; i++) {
    cout << ms[i].num << ' ';
  }
  return 0;
}
