#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #define M 10000 #define lenl 2013 using namespace std; #define ll long long #define pf printf #define sf scanf #define eps 1e-10 #define PI acos(-1.0) #define ll long long ll gcd(ll a, ll b){ return b == 0 ? a : gcd(b, a%b); } ll lcm(ll a, ll b){ return a*b / gcd(a, b); } struct node{ int id; int data; int sec; }; int cmp(const void *a, const void *b){ if ((*(node *)a).data == (*(node *)b).data){ if ((*(node *)a).sec == (*(node *)b).sec){ return (*(node *)a).id > (*(node *)b).id ? 1 : -1; }else return (*(node *)a).sec > (*(node *)b).sec ? 1 : -1; }else return (*(node *)a).data < (*(node *)b).data? 1 : -1; } int main(){ int n; while (cin >> n){ node a[9999]; for (int i = 0; i < n; i++){ int d1, d2; cin >> d1 >> d2; a[i].id = i; a[i].data = d1 - d2; a[i].sec = d2; } qsort(a, n,sizeof(node),cmp); for (int i = 0; i < n; i++){ if (i == 0)cout << a[i].id; else cout << " "<< a[i].id; } cout << endl; } return 0; }