#include <bits/stdc++.h>
using namespace std;
long long A[200002];
void solve() {
  long long n, k, x;
  cin >> n >> k >> x;
  vector<pair<long long, pair<long long, long long> > > v;
  long long cnt = 0;
  long long neg = 0;
  for (long long i = 1; i <= n; i++) {
    cin >> A[i];
    if (A[i] == 0) {
      cnt++;
    } else if (A[i] < 0) {
      neg++;
    }
  }
  if (k < cnt) {
    for (long long i = 1; i <= n; i++) {
      cout << A[i] << " ";
    }
    cout << '\n';
    return;
  } else {
    if (neg % 2 == 0) {
      long long ind = -1;
      for (long long i = 1; i <= n; i++) {
        if (A[i] == 0 and k > 0) {
          A[i] -= x;
          ind = i;
          k--;
          break;
        }
      }
      if (ind != -1) {
        for (long long i = ind + 1; i <= n; i++) {
          if (A[i] == 0 and k > 0) {
            A[i] += x;
            k--;
          }
        }
      }
    } else {
      for (long long i = 1; i <= n; i++) {
        if (A[i] == 0 and k > 0) {
          A[i] += x;
          k--;
        }
      }
    }
    neg = 0;
    for (long long i = 1; i <= n; i++) {
      if (A[i] < 0) neg++;
    }
    if (neg % 2 == 0) {
      for (long long i = 1; i <= n; i++) {
        v.push_back({abs(A[i]), {(A[i] < 0 ? -1 : 1), i}});
      }
      sort((v).begin(), (v).end());
      long long pos = v[0].second.second;
      if (v[0].second.first == -1) {
        double p = (v[0].first + 1) / (1.0 * x);
        long long moves = ceil(p);
        A[pos] += (min(moves, k)) * x;
        k -= min(moves, k);
      } else {
        double p = (v[0].first + 1) / (1.0 * x);
        long long moves = ceil(p);
        A[pos] -= (min(moves, k)) * x;
        k -= min(moves, k);
      }
    }
    multiset<pair<long long, pair<long long, long long> > > s;
    for (long long i = 1; i <= n; i++) {
      s.insert({abs(A[i]), {(A[i] < 0) ? -1 : 1, i}});
    }
    while (k > 0) {
      pair<long long, pair<long long, long long> > p = *(s.begin());
      s.erase(s.begin());
      long long pos = p.second.second;
      long long sgn = p.second.first;
      if (sgn == -1) {
        A[pos] -= x;
        k--;
        s.insert({abs(A[pos]), {sgn, pos}});
      } else {
        A[pos] += x;
        k--;
        s.insert({abs(A[pos]), {sgn, pos}});
      }
    }
    for (long long i = 1; i <= n; i++) {
      cout << A[i] << " ";
    }
    cout << '\n';
  }
}
signed main() {
  long long t;
  ios_base::sync_with_stdio(false);
  t = 1;
  while (t--) solve();
  return 0;
}
