#include <bits/stdc++.h>
using namespace std;
int n;
long long k, x;
long long a[200010];
int main() {
  int n;
  while (cin >> n >> k >> x) {
    int negative = 0;
    for (int i = 0; i < n; i++) {
      cin >> a[i];
      if (a[i] < 0) ++negative;
    }
    if (negative % 2 == 0) {
      int minId = 0;
      for (int i = 1; i < n; i++) {
        if (abs(a[i]) < abs(a[minId])) minId = i;
      }
      long long num = abs(a[minId]) / x + 1;
      if (a[minId] >= 0)
        a[minId] -= min(num, k) * x;
      else
        a[minId] += min(num, k) * x;
      k = max(k - num, 0LL);
    }
    priority_queue<pair<long long, int>, vector<pair<long long, int> >,
                   greater<pair<long long, int> > >
        que;
    for (int i = 0; i < n; i++) {
      que.push(make_pair(abs(a[i]), i));
    }
    while (k--) {
      pair<int, int> cur = que.top();
      que.pop();
      int id = cur.second;
      if (a[id] >= 0)
        a[id] += x;
      else
        a[id] -= x;
      que.push(make_pair(abs(a[id]), id));
    }
    for (int i = 0; i < n; i++) {
      if (i != n - 1)
        cout << a[i] << " ";
      else
        cout << a[i] << endl;
    }
  }
  return 0;
}
