#include <bits/stdc++.h>
using namespace std;
struct Point {
  long double x;
  long double y;
  int index;
  long double angle;
  Point(long double x, long double y, int index) : x(x), y(y), index(index) {
    angle = atan2(y, x);
  }
};
int main() {
  int n;
  cin >> n;
  auto cmp = [](Point const &lhs, Point const &rhs) {
    return lhs.angle < rhs.angle;
  };
  set<Point, decltype(cmp)> data(cmp);
  for (int i = 0; i < n; i++) {
    long double x, y;
    cin >> x >> y;
    data.emplace(x, y, i + 1);
  }
  vector<Point> points(data.begin(), data.end());
  long double min_delta = numeric_limits<long double>::max();
  int ind1 = 1, ind2 = 2;
  for (int i = 0; i < n - 1; i++) {
    long double delta = abs(points[i].angle - points[i + 1].angle);
    if (delta < min_delta) {
      min_delta = delta;
      ind1 = points[i].index;
      ind2 = points[i + 1].index;
    }
  }
  long double delta =
      abs(2 * acos(-1) + points[0].angle - points[points.size() - 1].angle);
  if (delta < min_delta) {
    ind1 = points[0].index;
    ind2 = points[points.size() - 1].index;
  }
  cout << ind1 << " " << ind2;
  return 0;
}
