#include <bits/stdc++.h>
using namespace std;
const int INF = (1 << 30) - 1;
const int DIRX[] = {-1, 0, 0, 1, -1, -1, 1, 1},
          DIRY[] = {0, -1, 1, 0, -1, 1, -1, 1};
const double ERR = 1e-9, PI = (2 * acos(0.0));
template <class T>
inline T MIN(T a, T b) {
  return ((a < b) ? a : b);
}
template <class T>
inline T MAX(T a, T b) {
  return ((b < a) ? a : b);
}
template <class T>
inline void checkMIN(T& a, T b) {
  if (b < a) a = b;
}
template <class T>
inline void checkMAX(T& a, T b) {
  if (a < b) a = b;
}
template <class T>
inline T sqr(T x) {
  return (x * x);
}
template <class T>
inline T gcd(T a, T b) {
  if (!b)
    return a;
  else
    return gcd(b, a % b);
}
template <class T>
void BubbleSort(vector<T>& VT) {
  for (int i = (int)VT.size(); i > 0; i--)
    for (int j = 1; j < i; j++)
      if (VT[j] < VT[j - 1]) swap(VT[j], VT[j - 1]);
}
template <class T>
T fastPow(T Base, T Power) {
  T Result = (T)1;
  while (Power > 0) {
    if (Power & (T)1) Result *= Base;
    Power >>= 1;
    Base *= Base;
  }
  return Result;
}
template <class T>
T fastPow(T Base, T Power, T Mod) {
  T Result = (T)1;
  while (Power > 0) {
    if (Power & (T)1) Result = (Result * Base) % Mod;
    Power >>= 1;
    Base = (Base * Base) % Mod;
  }
  return Result;
}
int compareDouble(double x, double y) {
  double d = x - y;
  if (d > ERR) return 1;
  if (d < -ERR) return -1;
  return 0;
}
int compareDouble(double x, double y, double err) {
  double d = x - y;
  if (d > err) return 1;
  if (d < -err) return -1;
  return 0;
}
int main() {
  int n, i, x, z = 0;
  vector<int> P;
  priority_queue<int> N;
  cin >> n;
  for (i = 0; i < (int)(n); i++) {
    cin >> x;
    if (x < 0)
      N.push(-x);
    else if (x > 0)
      P.push_back(x);
    else
      z++;
  }
  while (((int)(N).size()) >= 2) {
    P.push_back(-N.top());
    N.pop();
    P.push_back(-N.top());
    N.pop();
  }
  if (((int)(P).size()) > 0) {
    for (__typeof((P).begin()) it = (P).begin(); it != (P).end(); it++)
      cout << (*it) << ' ';
  } else if (z) {
    for (i = 0; i < (int)(z); i++) cout << (0) << ' ';
  } else {
    cout << (-N.top()) << ' ';
  }
  return 0;
}
