#include <bits/stdc++.h>
using namespace std;
int n;
vector<pair<pair<long long, long long>, int> > a;
bool fn(pair<pair<long long, long long>, int>& lhs,
        pair<pair<long long, long long>, int>& rhs) {
  long long x[] = {lhs.first.first, rhs.first.first};
  long long y[] = {lhs.first.second, rhs.first.second};
  long long p[2], q[2];
  for (int i = 0; i < 2; ++i) {
    p[i] = x[i] * x[i] * (x[i] < 0 ? -1 : 1);
    q[i] = x[i] * x[i] + y[i] * y[i];
    if (y[i] < 0) p[i] = -p[i] - q[i] * 2;
  }
  return p[0] * q[1] < p[1] * q[0];
}
void mult(long long p, long long q, long long res[3], int* sign) {
  *sign = (p >= 0 ? 1 : -1) * (q >= 0 ? 1 : -1);
  p *= (p < 0 ? -1 : 1);
  q *= (q < 0 ? -1 : 1);
  long long a[] = {p >> 31, q >> 31};
  long long b[] = {p & ((1LL << 31) - 1LL), q & ((1LL << 31) - 1LL)};
  res[0] = b[0] * b[1];
  res[1] = a[0] * b[1] + a[1] * b[0];
  res[2] = a[0] * a[1];
  for (int i = 0; i < 2; i++) {
    if (res[i] >= (1LL << 31)) {
      res[i + 1] += res[i] >> 31;
      res[i] &= (1LL << 31) - 1LL;
    }
  }
}
bool cmp(long long a[3], long long b[3]) {
  return a[2] != b[2] ? a[2] < b[2]
                      : (a[1] != b[1] ? a[1] < b[1] : a[0] < b[0]);
}
bool less_than(long long p0, long long q0, long long p1, long long q1) {
  int sign[2];
  long long res[2][3];
  mult(p0, q1, res[0], &sign[0]);
  mult(p1, q0, res[1], &sign[1]);
  if (sign[0] != sign[1]) return sign[0] < sign[1];
  if (sign[0] > 0) {
    return cmp(res[0], res[1]);
  } else
    return cmp(res[1], res[0]);
}
int main() {
  scanf("%d", &n);
  int x, y;
  for (int i = 0; i < n; ++i) {
    scanf("%d%d", &x, &y);
    a.push_back(make_pair(make_pair(x, y), i + 1));
  }
  sort(a.begin(), a.end(), fn);
  long long mp = -2, mq = 1;
  int ai = -1, aj = -1;
  for (int i = 0; i < n; ++i) {
    int j = (i == n - 1 ? 0 : i + 1);
    long long x[] = {a[i].first.first, a[j].first.first};
    long long y[] = {a[i].first.second, a[j].first.second};
    long long p = x[0] * x[1] + y[0] * y[1];
    p *= p * (p < 0 ? -1 : 1);
    long long q = (x[0] * x[0] + y[0] * y[0]) * (x[1] * x[1] + y[1] * y[1]);
    if (less_than(mp, mq, p, q)) {
      mp = p;
      mq = q;
      ai = a[i].second;
      aj = a[j].second;
    }
  }
  printf("%d %d\n", ai, aj);
  return 0;
}
