#include <bits/stdc++.h>
using namespace std;
int32_t seed;
mt19937 rng(seed = chrono::steady_clock::now().time_since_epoch().count());
inline int32_t rnd(int32_t l = 0, int32_t r = INT_MAX) {
  return uniform_int_distribution<int32_t>(l, r)(rng);
}
template <typename T, typename G>
ostream& operator<<(ostream& out, const pair<T, G>& a) {
  return out << "(" << a.first << " , " << a.second << ")";
}
template <typename T>
ostream& operator<<(ostream& out, const vector<T>& a) {
  out << "[";
  for (const auto& i : a) out << i << " , ";
  return out << "]";
}
template <typename T>
ostream& operator<<(ostream& out, const set<T>& a) {
  out << "{";
  for (const auto& i : a) out << i << " , ";
  return out << "}";
}
template <typename T, typename G>
ostream& operator<<(ostream& out, const map<T, G>& a) {
  out << "<";
  for (const auto& i : a) out << i << " , ";
  return out << ">";
}
template <typename T, size_t N>
typename enable_if<!is_same<typename remove_cv<T>::type, char>::value,
                   ostream&>::type
operator<<(ostream& out, T (&a)[N]) {
  out << '[';
  for (size_t i = 0; i < N; ++i) out << a[i] << " , ";
  out << ']';
  return out;
}
signed main() {
  ios_base::sync_with_stdio(false);
  cin.tie(NULL);
  cout.tie(NULL);
  int32_t n, i, first = 0;
  cin >> n;
  vector<int32_t> a(n), b(n), o, e;
  for (i = 0; i < n; i++) {
    cin >> a[i];
    b[i] = a[i] / 2;
    first += b[i];
    if (a[i] & 1) {
      if (a[i] > 0) {
        o.push_back(i);
      } else {
        e.push_back(i);
      }
    }
  }
  if (first > 0) {
    for (i = 0; i < e.size() && first; i++, first--) b[e[i]]--;
  } else if (first < 0) {
    for (i = 0; i < o.size() && first; i++, first++) b[o[i]]++;
  }
  for (i = 0; i < n; i++) cout << b[i] << "\n";
  return 0;
}
