#include <bits/stdc++.h>
using namespace std;
istream &operator>>(istream &in, vector<int> &v) {
  for (auto &i : v) in >> i;
  return in;
}
ostream &operator<<(ostream &out, vector<int> &v) {
  for (auto i : v) out << i << " ";
  return out;
}
bool cmp(pair<long double, long double> a, pair<long double, long double> b) {
  return atan2(a.second, a.first) < atan2(b.second, b.first);
}
long double get(pair<long double, long double> a) {
  return sqrt(a.first * a.first + a.second * a.second);
}
long double cal(pair<long double, long double> a,
                pair<long double, long double> b) {
  long double t = atan2(a.second, a.first) - atan2(b.second, b.first);
  if (t < 0) t += 2 * acos(-1);
  return t;
}
int main() {
  ios::sync_with_stdio(false);
  {
    long double mn = 2 * acos(-1);
    int n, a[2];
    map<pair<long double, long double>, int> mp;
    cin >> n;
    pair<long double, long double> p[100010];
    for (register int i = 1; i <= n; i++)
      cin >> p[i].first >> p[i].second, mp[p[i]] = i;
    sort(p + 1, p + 1 + n, cmp);
    mn = cal(p[1], p[n]);
    a[1] = n, a[0] = 1;
    for (register int i = 2; i <= n; i++) {
      if (cal(p[i], p[i - 1]) < mn) {
        mn = cal(p[i], p[i - 1]);
        a[0] = i, a[1] = i - 1;
      }
    }
    cout << mp[p[a[0]]] << " " << mp[p[a[1]]];
  }
}
