#include <bits/stdc++.h>
using namespace std;
int n, k, x, pos, neg;
long long arr[200005];
multiset<pair<long long, int>> ms;
multiset<pair<long long, int>>::iterator it1, it2;
bool comp(pair<long long, int> pp, pair<long long, int> b) {
  return pp.first < b.first;
}
int main() {
  cin >> n >> k >> x;
  for (int i = 0; i < n; i++) {
    cin >> arr[i];
    ms.insert({abs(arr[i]), i});
    if (arr[i] < 0) neg++;
  }
  pair<long long, int> pp;
  if (neg % 2 == 0) {
    it1 = ms.begin();
    pp = *it1;
    while (k > 0) {
      if (arr[pp.second] < 0) {
        arr[pp.second] += x;
        k--;
        if (arr[pp.second] >= 0) break;
      } else {
        arr[pp.second] -= x;
        k--;
        if (arr[pp.second] < 0) break;
      }
    }
    ms.erase(*ms.begin());
    ms.insert({abs(arr[pp.second]), pp.second});
  }
  while (k > 0) {
    it1 = ms.begin();
    pp = *it1;
    if (arr[pp.second] < 0) {
      arr[pp.second] -= x;
    } else {
      arr[pp.second] += x;
    }
    k--;
    ms.erase(*ms.begin());
    ms.insert({abs(arr[pp.second]), pp.second});
  }
  for (int i = 0; i < n; i++) cout << arr[i] << " ";
  return 0;
}
