#include<iostream>
#include<algorithm>
using namespace std;
struct node{
int t, k, zong;
int id;
int paiming;
}a[500005];
bool cmp1(node x, node y){
if(x.zong != y.zong) return x.zong > y.zong;
if(x.t != y.t) return x.t > y.t;
return x.id < y.id;
}
bool cmp2(node x, node y){
return x.id < y.id;
}
int main() {
int n;
cin >> n;
for(int i = 1; i <= n; i++){
cin >> a[i].t >> a[i].k;
a[i].zong = a[i].t * a[i].k;
a[i].id = i;
}
sort(a + 1, a + n + 1, cmp1);
for(int i = 1; i <= n; i++){
a[i].paiming = i;
}
sort(a + 1, a + n + 1, cmp2);
for(int i = 1; i <= n; i++){
cout << a[i].paiming << " ";
}
return 0;
}