#include <iostream>
#include <algorithm>
#include <vector>
using namespace std;
#define int long long
const int N = 5e5 + 50;
vector<int> segment_tree, arr, left_idx, right_idx;
void build_tree(int cur, int l, int r)
{
if (l == r)
{
segment_tree[cur] = arr[l];
return;
}
int mid = (l + r) / 2;
build_tree(cur + cur, l, mid);
build_tree(cur + cur + 1, mid + 1, r);
segment_tree[cur] = min(segment_tree[cur + cur], segment_tree[cur + cur + 1]);
}
pair<long long, long long> query(int cur, int l, int r)
{
if (l == r)
{
return { segment_tree[cur],l };
}
int mid = (l + r) / 2;
pair<long long, long long> ans = { 0,0 };
if (segment_tree[cur + cur] <= segment_tree[cur + cur + 1])ans = query(cur + cur, l, mid);
else ans = query(cur + cur + 1, mid + 1, r);
return ans;
}
void revise(int cur, int l, int r, int x, int val)
{
if (l == r)
{
segment_tree[cur] += val;
return;
}
int mid = (l + r) / 2;
if (x <= mid) {
revise(cur + cur, l, mid, x, val);
}else
{
revise(cur + cur + 1, mid + 1, r, x, val);
}
segment_tree[cur] = min(segment_tree[cur + cur], segment_tree[cur + cur + 1]);
}
int find_left_node(int x)
{
if (left_idx[x] != x)left_idx[x] = find_left_node(left_idx[x]);
return left_idx[x];
}
int find_right_node(int x)
{
if (right_idx[x] != x)right_idx[x] = find_right_node(right_idx[x]);
return right_idx[x];
}
void solve()
{
int n, k;
cin >> n >> k;
segment_tree = vector<int> (4 * ( n + 10), 0);
arr = vector<int> (n + 10, 0);
left_idx = vector<int> (n + 10, 0);
right_idx = vector<int> (n + 10, 0);
for (int i = 1; i <= n; i++)
{
cin >> arr[i];
}
build_tree(1, 1, n);
for (int i = 1; i <= n; i++)
{
left_idx[i] = i;
right_idx[i] = i;
}
while (k--)
{
pair<long long, long long> ans = query(1, 1, n);
int l = find_left_node(ans.second - 1), r = find_right_node(ans.second + 1);
left_idx[ans.second] = l;
right_idx[ans.second] = r;
revise(1, 1, n, ans.second, 1e18);
revise(1, 1, n, l, ans.first);
revise(1, 1, n, r, ans.first);
arr[l] += ans.first;
arr[r] += ans.first;
}
for (int i = 1; i <= n; i++)
{
if (left_idx[i] == i)cout << arr[i] << " ";
}
}
signed main()
{
ios_base::sync_with_stdio(false);
cin.tie(0);
cout.tie(0);
int t = 1;
while (t--)
{
solve();
}
return 0;
}