#include <bits/stdc++.h>
using namespace std;
struct point {
  long long x, y;
  point() { x = y = (long long)0; }
  point(long long _x, long long _y) : x(_x), y(_y) {}
  bool operator<(point other) const {
    return x * x + y * y < other.x * other.x + other.y * other.y;
  }
};
struct vec {
  long long x, y, idx;
  vec() { x = y = idx = (long long)0; }
  vec(long long _x, long long _y, long long _i) : x(_x), y(_y), idx(_i) {}
};
int main() {
  long long n, x, y;
  cin >> n;
  vector<vec> vc(n);
  for (long long i = 0; i < n; i++) {
    cin >> x >> y;
    vc[i] = vec(x, y, i);
  }
  bool res[n];
  while (true) {
    point p = point(0, 0);
    random_shuffle(vc.begin(), vc.end());
    for (long long i = 0; i < n; i++) {
      point p1, p2;
      p1 = point(p.x + vc[i].x, p.y + vc[i].y);
      p2 = point(p.x - vc[i].x, p.y - vc[i].y);
      if (p2 < p1) {
        p = p2;
        res[vc[i].idx] = false;
      } else {
        p = p1;
        res[vc[i].idx] = true;
      }
    }
    if (p.x * p.x + p.y * p.y <= 2.25 * (1e12)) break;
  }
  for (long long i = 0; i < n; i++) cout << (res[i] ? 1 : -1) << " ";
}
