#include <bits/stdc++.h>
const long double eps = 1e-8;
const long double pi = acos(-1);
using namespace std;
struct node {
  int x, y;
  int id;
  long double arg;
  bool operator<(const node &b) const { return arg < b.arg; }
} v[100005];
long double getarg(long double x, long double y) {
  if (fabs(x) < eps) {
    if (y > 0)
      return pi / 2;
    else
      return pi / 2 * 3;
  }
  if (fabs(y) < eps) {
    if (x > 0)
      return 0;
    else
      return pi;
  }
  if (x > 0) {
    if (y > 0)
      return atan(y / x);
    else
      return 2 * pi - atan(-y / x);
  } else {
    if (y > 0)
      return pi - atan(-y / x);
    else
      return pi + atan(y / x);
  }
}
int main() {
  int n;
  scanf("%d", &n);
  for (int i = 1; i <= n; i++) {
    scanf("%d %d", &v[i].x, &v[i].y);
    v[i].id = i;
    v[i].arg = getarg(v[i].x, v[i].y);
  }
  sort(v + 1, v + 1 + n);
  long double mx = 2333;
  int a, b;
  for (int i = 2; i <= n; i++) {
    if (v[i].arg - v[i - 1].arg < mx) {
      mx = v[i].arg - v[i - 1].arg;
      a = v[i - 1].id;
      b = v[i].id;
    }
  }
  if (2 * pi - v[n].arg + v[1].arg < mx) {
    a = v[1].id;
    b = v[n].id;
  }
  printf("%d %d\n", a, b);
  return 0;
}
