Problem:
Score : 500 points

Problem Statement

We have N bulbs arranged on a number line, numbered 1 to N from left to right.
Bulb i is at coordinate i.

Each bulb has a non-negative integer parameter called intensity.
When there is a bulb of intensity d at coordinate x, the bulb illuminates the segment from coordinate x-d-0.5 to x+d+0.5.
Initially, the intensity of Bulb i is A_i. We will now do the following operation K times in a row:

For each integer i between 1 and N (inclusive), let B_i be the number of bulbs illuminating coordinate i. Then, change the intensity of each bulb i to B_i.

Find the intensity of each bulb after the K operations.

Constraints

1 \leq N \leq 2 \times 10^5

1 \leq K \leq 2 \times 10^5

0 \leq A_i \leq N

Input

Input is given from Standard Input in the following format:

N K
A_1 A_2 \ldots A_N

Output

Print the intensity A{'}_i of each bulb i after the K operations to Standard Output in the following format:

A{'}_1 A{'}_2 \ldots A{'}_N

Sample Input 1

5 1
1 0 0 1 0

Sample Output 1

1 2 2 1 2

Initially, only Bulb 1 illuminates coordinate 1, so the intensity of Bulb 1 becomes 1 after the operation.
Similarly, the bulbs initially illuminating coordinate 2 are Bulb 1 and 2, so the intensity of Bulb 2 becomes 2.

Sample Input 2

5 2
1 0 0 1 0

Sample Output 2

3 3 4 4 3

Solution in C (GCC 9.2.1) (judge verdict: Time Limit Exceeded)

#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 200009
#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;}
	lr f[N];
	rep(i,k){
		int f1=1,f2=1;
		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[j].l<=l&&l<=f[j].r)a[l]++;
			}
		}
	}
	Rep(j,1,n+1)printf("%d ",a[j]);
	return 0;
}