#include <bits/stdc++.h>
#pragma comment(linker, "/STACK:256000000")
using namespace std;
const long double EPS = 1e-25;
const long double PI = acos(-1.0);
const int MAXN = (int)1e5 + 7;
const int INF = (int)1e9 + 7;
const int MOD = (int)1e9 + 7;
const long long P = 239017;
int solve();
int main() {
  solve();
  return 0;
}
class vt {
 public:
  int x, y, num;
  vt() : x(1), y(0), num(-1){};
  vt(int x, int y, int num) : x(x), y(y), num(num){};
  int operator^(vt &v) { return x * v.x + y * v.y; }
  int operator*(vt &v) { return x * v.y - v.x * y; }
  long double len() { return sqrt(x * x + y * y); }
  long double absangle(vt &v2) {
    vt v1 = {x, y, num};
    long double ang = abs(atan2(v1 * v2, v1 ^ v2));
    return min(ang, 2 * PI - ang);
  }
  long double angox() {
    vt v = {x, y, num};
    if (y == 0) {
      return (x < 0) * PI;
    }
    long double ang = atan2(vt() * v, vt() ^ v);
    if (y < 0) {
      ang = 2 * PI + ang;
    }
    return ang;
  }
};
vt a[MAXN];
int solve() {
  int n;
  cin >> n;
  for (int i = 0; i < (int)n; i++) {
    cin >> a[i].x >> a[i].y;
    a[i].num = i + 1;
  }
  sort(a, a + n, [](vt v1, vt v2) { return v2.angox() - v1.angox() > -EPS; });
  long double minim = INF;
  int ans1 = 0, ans2 = 0;
  for (int i = 0; i < (int)n; i++) {
    int j = (i + 1) % n;
    vt v1 = a[i], v2 = a[j];
    long double ang = v1.absangle(v2);
    if (minim - ang > -EPS) {
      minim = ang, ans1 = v1.num, ans2 = v2.num;
    }
  }
  cout << ans1 << ' ' << ans2;
  return 0;
}
