#include <bits/stdc++.h>
using namespace std;
int main() {
  ios::sync_with_stdio(false);
  cin.tie(0);
  int n, k, x;
  cin >> n >> k >> x;
  long long a[n];
  for (int i = 0; i < n; i++) {
    cin >> a[i];
  }
  int cnt = 0;
  for (int i = 0; i < n; i++) {
    cnt += (a[i] < 0);
  }
  auto print = [&]() -> void {
    for (int i = 0; i < n; i++) {
      cout << a[i] << ' ';
    }
  };
  if (cnt == 0 || cnt % 2 == 1) {
    int mn = min_element(a, a + n) - a;
    if (a[mn] >= 0) {
      int req = (a[mn] + 1 + x - 1) / x;
      if (req > k) {
        a[mn] -= 1LL * k * x;
        print();
        return 0;
      }
      a[mn] -= 1LL * req * x;
      k -= req;
    }
    priority_queue<pair<long long, int>, vector<pair<long long, int>>,
                   greater<pair<long long, int>>>
        pq;
    for (int i = 0; i < n; i++) {
      pq.push({abs(a[i]), i});
    }
    while (k--) {
      pair<long long, int> p = pq.top();
      pq.pop();
      if (a[p.second] >= 0)
        a[p.second] += x;
      else
        a[p.second] -= x;
      pq.push({abs(a[p.second]), p.second});
    }
    print();
    return 0;
  } else {
    long long mn = -1e9, mx = 2e9;
    for (int i = 0; i < n; i++) {
      if (a[i] < 0) {
        mn = max(mn, a[i]);
      } else {
        mx = min(mx, a[i]);
      }
    }
    int ind = 0;
    if (abs(mn) < abs(mx))
      ind = find(a, a + n, mn) - a;
    else
      ind = find(a, a + n, mx) - a;
    int req = (abs(a[ind]) + 1 + x - 1) / x;
    if (req > k) {
      if (a[ind] < 0)
        a[ind] += 1LL * k * x;
      else
        a[ind] -= 1LL * k * x;
      print();
      return 0;
    }
    if (a[ind] < 0)
      a[ind] += 1LL * req * x;
    else
      a[ind] -= 1LL * req * x;
    k -= req;
    priority_queue<pair<long long, int>, vector<pair<long long, int>>,
                   greater<pair<long long, int>>>
        pq;
    for (int i = 0; i < n; i++) {
      pq.push({abs(a[i]), i});
    }
    while (k--) {
      pair<long long, int> p = pq.top();
      pq.pop();
      if (a[p.second] >= 0)
        a[p.second] += x;
      else
        a[p.second] -= x;
      pq.push({abs(a[p.second]), p.second});
    }
    print();
    return 0;
  }
  for (int i = 0; i < n; i++) {
    cout << a[i] << ' ';
  }
}
