#include <bits/stdc++.h>
using namespace std;
const int N = 100010;
inline long long read() {
  long long jg = 0, jk = getchar() - '0', f = 1;
  while (jk < 0 || jk > 9) {
    if (jk == '-' - '0') f = -1;
    jk = getchar() - '0';
  }
  while (jk >= 0 && jk <= 9) jg *= 10, jg += jk, jk = getchar() - '0';
  return jg * f;
}
struct node {
  int x, y, id;
  long double d;
  inline void in(int v) {
    x = read(), y = read();
    id = v;
    d = atan2(y, x);
  }
} p[N];
int comp(node a, node b) { return a.d < b.d; }
int n, ans1, ans2;
long double s, t;
int main() {
  n = read();
  for (int i = 1; i <= n; ++i) p[i].in(i);
  sort(p + 1, p + n + 1, comp);
  ans1 = n, ans2 = 1;
  s = p[1].d - p[n].d;
  long double pi = 2 * acos(-1.0);
  if (s < 0) s += pi;
  for (int i = 1; i < n; ++i) {
    t = p[i + 1].d - p[i].d;
    if (s > t) s = t, ans1 = i, ans2 = i + 1;
  }
  printf("%d %d", p[ans1].id, p[ans2].id);
  return 0;
}
