func_code_string: #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;   }   