#include <bits/stdc++.h>
using namespace std;
template <typename T>
T getint() {
  T x = 0, p = 1;
  char ch;
  do {
    ch = getchar();
  } while (ch <= ' ');
  if (ch == '-') p = -1, ch = getchar();
  while (ch >= '0' && ch <= '9') x = x * 10 + ch - '0', ch = getchar();
  return x * p;
}
template <typename T1, typename T2>
bool umin(T1 &x, const T2 &y) {
  if (x > y) return x = y, true;
  return false;
}
template <typename T1, typename T2>
bool umax(T1 &x, const T2 &y) {
  if (x < y) return x = y, true;
  return false;
}
const int maxn = (int)2e5 + 10;
const int inf = (int)1e9 + 5;
const int mod = (int)1e9 + 7;
const long long llinf = (long long)1e18 - 1;
const long double pi = acos(-1.0);
long long a[maxn];
long double lg[maxn];
int n;
long long k, x;
void process() {
  multiset<pair<long long, int> > s;
  for (int i = (0); i < (n); i++) s.insert(make_pair(abs(a[i]), i));
  while (k--) {
    auto z = *s.begin();
    s.erase(z);
    z.first += x;
    s.insert(z);
  }
  for (auto z : s) {
    int t = (a[z.second] > 0) - (a[z.second] < 0);
    if (t == 0) t = 1;
    a[z.second] = z.first * t;
  }
}
int main() {
  ios_base::sync_with_stdio(0);
  cin >> n >> k >> x;
  int A = 0, B = 0;
  int cnt = 0;
  for (int i = (0); i < (n); i++) {
    cin >> a[i];
    if (a[i] < 0) cnt++;
  }
  if (cnt % 2 == 1) {
    process();
  } else {
    int j = 0;
    for (int i = (0); i < (n); i++) {
      if (abs(a[i]) < abs(a[j])) j = i;
    }
    long long z = abs(a[j]) / x + 1;
    long long delta;
    if (a[j] < 0)
      delta = z * x;
    else
      delta = -z * x;
    a[j] += delta;
    if (z > k) {
      a[j] -= delta;
      multiset<pair<long long, int> > s;
      for (int i = (0); i < (n); i++) s.insert(make_pair(abs(a[i]), i));
      while (k--) {
        auto z = *s.begin();
        if (z.first == 0) break;
        s.erase(z);
        z.first -= x;
        s.insert(z);
      }
      for (auto z : s) {
        int t = (a[z.second] > 0) - (a[z.second] < 0);
        a[z.second] = z.first * t;
      }
    } else {
      k -= z;
      process();
    }
  }
  for (int i = (0); i < (n); i++) cout << a[i] << ' ';
  return 0;
}
