#include <bits/stdc++.h>
using namespace std;
struct point {
  long double x, y;
  point(long double xx, long double yy) {
    x = xx;
    y = yy;
  }
};
const long double pi = acos(-1.0);
long double dist(point p1, point p2) { return hypot(p1.x - p2.x, p1.y - p2.y); }
vector<point> v;
vector<pair<long double, int> > angs;
int main() {
  int n;
  cin >> n;
  for (int i = 0; i < n; i++) {
    int a, b;
    cin >> a >> b;
    v.push_back(point(a, b));
  }
  for (int i = 0; i < v.size(); i++) {
    angs.push_back(make_pair(atan2(v[i].y, v[i].x), i));
  }
  sort(angs.begin(), angs.end());
  long double mn = 10000000.0;
  int idx1 = -1;
  int idx2 = -1;
  for (int i = 0; i < n - 1; i++) {
    int nx = i + 1;
    long double d = abs(angs[i].first - angs[nx].first);
    if (d < mn) {
      mn = d;
      idx1 = angs[i].second;
      idx2 = angs[nx].second;
    }
  }
  for (int i = 1; i < n; i++) {
    int nx = i - 1;
    long double d = abs(angs[i].first - angs[nx].first);
    if (d < mn) {
      mn = d;
      idx1 = angs[i].second;
      idx2 = angs[nx].second;
    }
  }
  long double ang1 = angs[0].first;
  long double ang2 = angs.back().first;
  if (ang1 > ang2) swap(ang1, ang2);
  long double delta = min(ang2 - ang1, ang1 - ang2 + 2 * pi);
  if (delta < mn) {
    idx1 = angs[0].second;
    idx2 = angs.back().second;
  }
  cout << idx1 + 1 << " " << idx2 + 1 << endl;
  return 0;
}
