#include <bits/stdc++.h>
using namespace std;
const int OO = (int)1e9;
const double eps = 1e-10;
const int MX = 2e5 + 5;
int n, x, k, negCnt, mn = 1e9 + 5, mnIdx;
long long a[MX];
bool neg[MX];
set<pair<long long, int>> S;
void solve() {
  for (int i = 0; i < int(n); ++i) S.insert({a[i], i});
  while (k--) {
    long long mn = S.begin()->first;
    int idx = S.begin()->second;
    S.erase(S.begin());
    a[idx] += x;
    S.insert({mn + x, idx});
  }
  for (int i = 0; i < int(n); ++i) cout << a[i] * (neg[i] ? -1 : 1) << ' ';
}
void print() {
  cout << "> "
       << "k"
       << " = " << (k) << '\n';
  for (int i = 0; i < int(n); ++i) cout << a[i] << '\t';
  cout << '\n';
  for (int i = 0; i < int(n); ++i) cout << neg[i] << '\t';
  cout << '\n';
}
int main() {
  ios::sync_with_stdio(false);
  cout.precision(10);
  cin >> n >> k >> x;
  for (int i = 0; i < int(n); ++i) {
    cin >> a[i];
    if (a[i] < 0) neg[i] = true, ++negCnt;
    a[i] = abs(a[i]);
    if (a[i] < mn) mn = a[i], mnIdx = i;
  }
  if (negCnt & 1)
    solve();
  else {
    int steps = min((mn + x - 1) / x, k);
    a[mnIdx] -= steps * x;
    k -= steps;
    if (!a[mnIdx] && k) --k, a[mnIdx] -= x;
    if (a[mnIdx] < 0) neg[mnIdx] = !neg[mnIdx];
    a[mnIdx] = abs(a[mnIdx]);
    solve();
  }
  return 0;
}
