#include <bits/stdc++.h>
using namespace std;
const int N = 3e5 + 20;
const double pi = 3.141592653;
const double ME = 2.71828;
void LOSER() {
  ios::sync_with_stdio(0);
  cin.tie(0);
  cout.tie(0);
}
void file() {
  freopen("text.in", "r", stdin);
  freopen("text.out", "w", stdout);
}
long long gcd(long long a, long long b) { return (!b) ? a : gcd(b, a % b); }
long long lcm(long long a, long long b) { return a / gcd(a, b) * b; }
long long Fib_recur(long long n) {
  vector<long long> v(n + 5, 0);
  v[1] = 0;
  v[2] = 1;
  for (int i = int(3); i <= int(n); i++) {
    v[i] = v[i - 1] + v[i - 2];
  }
  return v[n];
}
bool isprime(int n) {
  for (int i = 2; i <= sqrt(n); i++) {
    if (n % i == 0) return false;
  }
  return true;
}
void Solve() {
  int Number_of_peaks, Peak;
  cin >> Number_of_peaks >> Peak;
  Number_of_peaks *= 2;
  Number_of_peaks++;
  int arr[Number_of_peaks];
  for (int i = 1; i <= Number_of_peaks; i++) cin >> arr[i];
  for (int i = Number_of_peaks; i > 1; i--) {
    if (i % 2 == 0 && Peak > 0) {
      arr[i]--;
      if (arr[i] > arr[i + 1] && arr[i] > arr[i - 1]) {
        Peak--;
      } else {
        arr[i]++;
      }
    }
  }
  for (int i = 1; i <= Number_of_peaks; i++) cout << arr[i] << " ";
}
int main() {
  LOSER();
  Solve();
}
