#include <bits/stdc++.h>
using namespace std;
int extendedeuclidean(int a, int b, int &x, int &y) {
  if (b == 0) {
    x = 1;
    y = 0;
    return a;
  }
  int x1, y1;
  int d = extendedeuclidean(b, a % b, x1, y1);
  x = y1;
  y = x1 - y1 * (a / b);
  return d;
}
int main(void) {
  ios_base::sync_with_stdio(false);
  cin.tie(NULL);
  int T;
  {
    int n;
    cin >> n;
    vector<pair<long long int, long long int>> A(n);
    for (auto &i : A) cin >> i.first >> i.second;
    vector<pair<long double, long long int>> B(n);
    for (int i = 0; i < n; i++) {
      B[i].first = atan2(A[i].second * 1.0, A[i].first * 1.0);
      if (B[i].first < 0) B[i].first += 2 * acos(-1.0);
      B[i].second = i + 1;
    }
    sort(B.begin(), B.end());
    long double mini = 2 * acos(-1.0);
    long long int op1 = 0, op2 = 0;
    for (int i = 0; i < n - 1; i++) {
      long double xv = B[i + 1].first - B[i].first;
      if (xv < 0) xv += 2 * acos(-1.0);
      if (xv < mini) {
        mini = xv;
        op1 = B[i].second;
        op2 = B[i + 1].second;
      }
    }
    long double xv = B[0].first - B[n - 1].first;
    if (xv < 0) xv += 2 * acos(-1.0);
    if (xv < mini) {
      cout << B[0].second << " " << B[n - 1].second << "\n";
      return 0;
    }
    cout << op2 << " " << op1 << "\n";
  }
  return 0;
}
