#include <bits/stdc++.h>
using namespace std;
const long long OO = 1e9;
const long long mod = 1e9 + 7;
const long double EPS = (1e-18);
int dcmp(long double x, long double y) {
  return fabs(x - y) <= EPS ? 0 : x < y ? -1 : 1;
}
int dx[] = {0, 0, 1, -1, 1, 1, -1, -1};
int dy[] = {1, -1, 0, 0, -1, 1, 1, -1};
void fast() {
  std::ios_base::sync_with_stdio(0);
  cin.tie(NULL);
  cout.tie(NULL);
}
const long double PI = 3.1415926535897932384626433832795028841971693993751;
const long long MAX = 1000 * 100 + 1;
int n;
struct vec {
  int X, Y;
  long double angle;
  int idx;
  bool operator<(const vec& e) const { return dcmp(angle, e.angle) == -1; }
} a[MAX];
int main() {
  fast();
  cin >> n;
  for (int i = 0; i < n; i++) {
    cin >> a[i].X >> a[i].Y;
    a[i].angle = atan2(a[i].Y, a[i].X) * 180.0 / PI;
    if (dcmp(a[i].angle, 0.0) == -1) a[i].angle += 360.0;
    a[i].idx = i;
  }
  sort(a, a + n);
  double w = OO;
  int ii = -1;
  long double ang;
  for (int i = 1; i < n; i++) {
    ang = a[i].angle - a[i - 1].angle;
    ang = min(ang, 360. - ang);
    if (w > ang) {
      w = ang;
      ii = i;
    }
  }
  ang = a[n - 1].angle - a[0].angle;
  ang = min(ang, 360.0 - ang);
  if (w > ang) {
    w = ang;
    ii = 0;
  }
  cout << a[ii].idx + 1 << " " << a[((ii - 1) % n + n) % n].idx + 1 << endl;
  return 0;
}
