#include <algorithm>
#include <iostream>
#include <tuple>
#include <vector>
using namespace std;
const int INF = 2'000'000'100;
int main() {
int n;
cin >> n;
using Point = std::tuple<int, int, int>; // x, i, y;
vector<Point> points(n);
for (int i = 0; i < n; ++i) {
auto &[x, index, y] = points[i];
cin >> x >> y;
index = i + 1;
}
tuple<int, int, int> bestAnswer = make_tuple(INF, INF, INF);
for (int i = 0; i < 2; ++i) {
sort(points.begin(), points.end());
for (int i = 1; i < n; ++i) {
auto [xPrev, indexPrev, yPrev] = points[i - 1];
auto [x, index, y] = points[i];
auto currentAnswer =
make_tuple(abs(x - xPrev), index + indexPrev, min(index, indexPrev));
if (currentAnswer < bestAnswer) {
bestAnswer = currentAnswer;
}
}
// we're swapping X and Y here and repeat the same
for(auto &p: points) {
auto &[x, index, y] = p;
swap(x, y);
}
}
auto [d, sum, i] = bestAnswer;
auto j = sum - i;
cout << i << " " << j << endl;
return 0;
}