#include <bits/stdc++.h>
using namespace std;
int main(void) {
  srand(time(0));
  cout << fixed << setprecision(7);
  cerr << fixed << setprecision(7);
  ios_base ::sync_with_stdio(0);
  cin.tie(0);
  int n, k, m;
  cin >> n >> k >> m;
  multiset<pair<pair<long long, int>, int> > Q;
  int ng = 0;
  for (int i = 1; i <= n; ++i) {
    int v;
    cin >> v;
    ng += v < 0;
    Q.insert({{abs(v), (bool)(v < 0)}, i});
  }
  static long long ans[1 << 20];
  while (k--) {
    auto node = *Q.begin();
    Q.erase(Q.begin());
    long long v = node.first.first * (node.first.second ? -1 : 1);
    ng -= node.first.second;
    if (ng & 1)
      v += m;
    else
      v -= m;
    ng += v < 0;
    node.first = {abs(v), (bool)(v < 0)};
    Q.insert(node);
  }
  for (auto it : Q)
    ans[it.second] = it.first.first * (it.first.second ? -1 : 1);
  for (int i = 1; i <= n; ++i) cout << ans[i] << " \n"[i == n];
  cerr << "Time elapsed :" << clock() * 1000.0 / CLOCKS_PER_SEC << " ms"
       << '\n';
  return 0;
}
