#include <bits/stdc++.h>
#pragma comment(linker, "/STACK:102400000,102400000")
using namespace std;
const long double pi = acos(-1);
const int maxn = 1e5 + 300;
int n;
struct vec {
  long long x, y;
  int id;
  long double ang;
  bool operator<(const vec &C) const { return ang < C.ang; }
} a[maxn];
long double getang(vec a) { return atan2(a.x, a.y); }
int main() {
  cin >> n;
  for (int i = 1; i <= n; i++) {
    cin >> a[i].x >> a[i].y;
    a[i].id = i;
    a[i].ang = getang(a[i]);
  }
  sort(a + 1, a + n + 1);
  long double mm = 1e120;
  int l, r;
  for (int i = 1; i < n; i++) {
    if (min(a[i + 1].ang - a[i].ang, 2 * pi - (a[i + 1].ang - a[i].ang)) < mm) {
      mm = min(a[i + 1].ang - a[i].ang, 2 * pi - (a[i + 1].ang - a[i].ang));
      l = a[i].id, r = a[i + 1].id;
    }
  }
  if (min(a[n].ang - a[1].ang, 2 * pi - (a[n].ang - a[1].ang)) < mm) {
    mm = min(a[n].ang - a[1].ang, 2 * pi - (a[n].ang - a[1].ang));
    l = a[1].id, r = a[n].id;
  }
  printf("%d %d\n", l, r);
  return 0;
}
