#include <bits/stdc++.h>
using namespace std;
struct pt {
  long long int x, y;
};
long long int crossprod(pt a, pt b) { return a.x * b.y - a.y * b.x; }
bool bot(pt a) { return a.y < 0 || a.y == 0 && a.x < 0; }
bool operator<(pt a, pt b) {
  bool ta = bot(a);
  bool tb = bot(b);
  if (ta != tb) return ta;
  return crossprod(a, b) > 0;
}
bool operator==(pt a, pt b) { return a.x == b.x && a.y == b.y; }
long long int dotprod(pt a, pt b) { return a.x * b.x + a.y * b.y; }
bool is_less(pt a, pt b, pt c, pt d) {
  pt a2;
  a2.x = dotprod(a, b);
  a2.y = abs(crossprod(a, b));
  pt b2;
  b2.x = dotprod(c, d);
  b2.y = abs(crossprod(c, d));
  return crossprod(a2, b2) > 0;
}
int main() {
  ios::sync_with_stdio(0);
  cin.tie(0);
  cout.tie(0);
  int n;
  cin >> n;
  vector<pt> a(n), b(n);
  for (int i = 0; i < n; ++i) {
    cin >> a[i].x >> a[i].y;
    b[i].x = a[i].x;
    b[i].y = a[i].y;
  }
  sort(a.begin(), a.end());
  a.push_back(a[0]);
  pt minv = a[0];
  pt minu = a[1];
  for (int i = 1; i <= n; ++i) {
    if (is_less(a[i], a[i - 1], minv, minu)) {
      minv = a[i];
      minu = a[i - 1];
    }
  }
  int i, j;
  for (i = 0; i < n; ++i) {
    if (b[i] == minv) {
      j = i;
      cout << i + 1 << " ";
      break;
    }
  }
  for (i = 0; i < n; ++i)
    if (b[i] == minu && j != i) return !(cout << i + 1);
  return 0;
}
