import sys

from collections import defaultdict, Counter, namedtuple, deque

import itertools

import functools

import bisect

import heapq

import math

# from fractions import gcd



MOD = 10 ** 9 + 7

# MOD = 998244353

# sys.setrecursionlimit(10**8)



N, k = list(map(int, input().split()))

prev_arr = list(map(int, input().split()))



# N = k = 200000

# prev_arr = [0]*N



count = 0

for i in range(min(k, 3*int(math.log(N))+5)):

    que = []

    arr = [0]*N

    for j in range(N):

        heapq.heappush(que, j+prev_arr[j])

        while que[0] < j:

            heapq.heappop(que)

        arr[j] += len(que)

    # print(arr)



    que = []

    for j in reversed(list(range(N))):

        heapq.heappush(que, -(j-prev_arr[j]))

        while -que[0] > j:

            heapq.heappop(que)

        arr[j] += len(que) - 1



    prev_arr = arr

    count += 1



# print(count)

print((*prev_arr))

import sys

from collections import defaultdict, Counter, namedtuple, deque

import itertools

import functools

import bisect

import heapq

import math

# from fractions import gcd



MOD = 10 ** 9 + 7

# MOD = 998244353

# sys.setrecursionlimit(10**8)



N, k = list(map(int, input().split()))

prev_arr = list(map(int, input().split()))



count = 0

for i in range(min(k, 3*int(math.log(N))+10)):

    arr = [0]*N

    for j in range(N):

        left = max(0, j-prev_arr[j])

        right = min(N-1, j+prev_arr[j])

        arr[left] += 1

        if right < N-1:

            arr[right+1] -= 1



    # print(arr)

    for j in range(1, N):

        arr[j] += arr[j-1]



    # print(arr)

    prev_arr = arr

    count += 1



# print(count)

print((*prev_arr))

import sys
from collections import defaultdict, Counter, namedtuple, deque
import itertools
import functools
import bisect
import heapq
import math

# from fractions import gcd
MOD = 10**9 + 7
# MOD = 998244353
# sys.setrecursionlimit(10**8)
N, k = list(map(int, input().split()))
prev_arr = list(map(int, input().split()))
# N = k = 200000
# prev_arr = [0]*N
count = 0
for i in range(min(k, 3 * int(math.log(N)) + 5)):
    que = []
    arr = [0] * N
    for j in range(N):
        heapq.heappush(que, j + prev_arr[j])
        while que[0] < j:
            heapq.heappop(que)
        arr[j] += len(que)
    # print(arr)
    que = []
    for j in reversed(list(range(N))):
        heapq.heappush(que, -(j - prev_arr[j]))
        while -que[0] > j:
            heapq.heappop(que)
        arr[j] += len(que) - 1
    prev_arr = arr
    count += 1
# print(count)
print((*prev_arr))

import sys
from collections import defaultdict, Counter, namedtuple, deque
import itertools
import functools
import bisect
import heapq
import math

# from fractions import gcd
MOD = 10**9 + 7
# MOD = 998244353
# sys.setrecursionlimit(10**8)
N, k = list(map(int, input().split()))
prev_arr = list(map(int, input().split()))
count = 0
for i in range(min(k, 3 * int(math.log(N)) + 10)):
    arr = [0] * N
    for j in range(N):
        left = max(0, j - prev_arr[j])
        right = min(N - 1, j + prev_arr[j])
        arr[left] += 1
        if right < N - 1:
            arr[right + 1] -= 1
    # print(arr)
    for j in range(1, N):
        arr[j] += arr[j - 1]
    # print(arr)
    prev_arr = arr
    count += 1
# print(count)
print((*prev_arr))

-# N = k = 200000 -# prev_arr = [0]*N -for i in range(min(k, 3 * int(math.log(N)) + 5)): -    que = [] +for i in range(min(k, 3 * int(math.log(N)) + 10)): -        heapq.heappush(que, j + prev_arr[j]) -        while que[0] < j: -            heapq.heappop(que) -        arr[j] += len(que) +        left = max(0, j - prev_arr[j]) +        right = min(N - 1, j + prev_arr[j]) +        arr[left] += 1 +        if right < N - 1: +            arr[right + 1] -= 1 -    que = [] -    for j in reversed(list(range(N))): -        heapq.heappush(que, -(j - prev_arr[j])) -        while -que[0] > j: -            heapq.heappop(que) -        arr[j] += len(que) - 1 +    for j in range(1, N): +        arr[j] += arr[j - 1] +    # print(arr)