#include <bits/stdc++.h>
long double PI = acos((long double)(-1));
struct pt {
  long double x;
  long double y;
  int idx;
  long double t;
};
std::ostream& operator<<(std::ostream& os, const pt& p) {
  os << "(" << p.x << ", " << p.y << ")";
  return os;
}
template <typename T>
void pv(const std::vector<T>& v,
        const std::string c = "v:", std::ostream& s = std::cout) {
  s << c << "\n";
  for (const auto x : v) {
    s << x << " ";
  }
  s << "\n";
}
int main() {
  int N;
  std::cin >> N;
  std::vector<pt> v;
  for (int i = 0; i < N; ++i) {
    pt t;
    std::cin >> t.x >> t.y;
    t.idx = i;
    t.t = atan2(t.x, t.y);
    v.push_back(t);
  }
  std::sort(v.begin(), v.end(),
            [](const pt& a, const pt& b) { return a.t < b.t; });
  int ansi, ansj;
  ansi = v[0].idx;
  ansj = v[N - 1].idx;
  auto angle = [](const pt& a, const pt& b) {
    long double t = std::abs(a.t - b.t);
    return t <= PI ? t : 2 * PI - t;
  };
  long double a = angle(v[0], v[N - 1]);
  for (int i = 0; i < N - 1; ++i) {
    long double ca = angle(v[i], v[i + 1]);
    if (ca < a) {
      a = ca;
      ansi = v[i].idx;
      ansj = v[i + 1].idx;
    }
  }
  std::cout << ansi + 1 << " " << ansj + 1 << "\n";
  return 0;
}
