#include <bits/stdc++.h>
using namespace std;
struct edge {
  long long a, b, cost;
  edge(long long x, long long y, long long z) : a(x), b(y), cost(z){};
};
struct data {
  long long x, y, id, ans;
};
bool comp(data a, data b) { return abs(a.x - a.y) > abs(b.x - b.y); }
bool comp1(data a, data b) { return a.id < b.id; }
long long dis(long long x, long long y) { return x * x + y * y; }
int main() {
  long long n;
  cin >> n;
  data a[n];
  for (long long i = 0; i < (long long)(n); i++) {
    a[i].id = i;
    cin >> a[i].x >> a[i].y;
  }
  long long p = 0, q = 0;
  sort(a, a + n, comp);
  for (long long i = (long long)(0); i <= (long long)(n - 1); i++) {
    if (dis(p + a[i].x, q + a[i].y) < dis(p - a[i].x, q - a[i].y))
      p += a[i].x, q += a[i].y, a[i].ans = 1;
    else
      p -= a[i].x, q -= a[i].y, a[i].ans = -1;
  }
  sort(a, a + n, comp1);
  for (long long i = (long long)(0); i <= (long long)(n - 1); i++)
    cout << a[i].ans << " ";
  return 0;
}
