#include <bits/stdc++.h>
#pragma GCC optimize("Ofast")
#pragma GCC optimize("unroll-loops")
#pragma GCC target("sse,sse2,sse3,ssse3,sse4,popcnt,abm,mmx,avx,tune=native")
using namespace std;
const long long MAX_SQR_LEN = 2250000000000L;
struct Point {
  long long x, y;
  Point() : x(), y() {}
  Point(long long _x, long long _y) : x(_x), y(_y) {}
  Point operator+(const Point& a) const { return Point(x + a.x, y + a.y); }
  Point operator-(const Point& a) const { return Point(x - a.x, y - a.y); }
  Point operator*(const long long& k) const { return Point(x * k, y * k); }
  long long sqrLen() const { return x * x + y * y; }
};
int main() {
  ios::sync_with_stdio(false);
  int n;
  cin >> n;
  vector<pair<Point, int>> p(n);
  for (int i = 0; i < n; i++) {
    cin >> p[i].first.x >> p[i].first.y;
    p[i].second = i;
  }
  mt19937 randGen(time(0));
  vector<int> c(n);
  Point pos;
  while (true) {
    shuffle(p.begin(), p.end(), randGen);
    pos.x = 0;
    pos.y = 0;
    for (int i = 0; i < n; i++) {
      Point pPlus = pos + p[i].first, pMinus = pos - p[i].first;
      long long distPlus = pPlus.sqrLen(), distMinus = pMinus.sqrLen();
      if (distPlus <= distMinus) {
        c[p[i].second] = 1;
        pos = pPlus;
      } else {
        c[p[i].second] = -1;
        pos = pMinus;
      }
    }
    if (pos.sqrLen() <= MAX_SQR_LEN) break;
  }
  for (int i = 0; i < n; i++) cout << c[i] << " ";
  cout << endl;
}
