#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <string.h>
#include <stdbool.h>
typedef long long LL;
typedef long double Lf;
#define Rep(i,a,n)for(int i=(int)(a);i<(int)(n);i++)
#define rep(i,n)Rep(i,0,n)
#define Ma(x,y) ((x)>(y)?(x):(y))
#define mi(x,y) ((x)<(y)?(x):(y))
#define N 1001
#define MOD 1000000007
int acs(const void* a, const void* b) { return *(int*)a - *(int*)b; }//1,2,3,4
int des(const void* a, const void* b) { return *(int*)b - *(int*)a; }//9,8,7,6
int cmp_char(const void* a, const void* b) { return *(char*)a - *(char*)b; }//a,b,c,d
int cmp_str(const void* a, const void* b) { return strcmp(*(const char**)a, *(const char**)b); }//aaa,aab
//temmie_のsnippet

typedef struct LR {
	int l;
	int r;
}lr;

upl(const void* a, const void* b) { return((lr*)a)->l - ((lr*)b)->l; }
downr(const void* a, const void* b) { return((lr*)b)->r - ((lr*)a)->r; }


int main() {
	int n, k, a[N];
	scanf("%d%d",&n,&k);
	Rep(j,1,n+1)scanf("%d",&a[j]);
	if(k>=50||k>=n||){rep(i,n)printf("%d ",n);return 0;}
	if(n>=10000){rep(i,n)printf("%d ",n);return 0;}
	lr f[N];
	rep(i,k){
		int f1=1,f2=1;
		f[0].l=0;f[0].r=0;
		Rep(j,1,n+1){
			f[j].l=j-a[j];
			if(f[j].l<=1)f1=0;
			f[j].r=j+a[j];
			if(n<=f[j].r)f2=0;
		}
		if(f1*f2){rep(j,n)printf("%d ",n);return 0;}
		Rep(j,1,n+1)a[j]=0;
		Rep(l,1,n+1){
			Rep(j,1,n+1){
				if(f[l].l<=l&&l<=f[l].r)a[l]++;
			}
		}

	}
	Rep(j,1,n+1)printf("%d ",a[j]);
	return 0;
}