#include <bits/stdc++.h>
using namespace std;
vector<pair<pair<int, int>, int> > v;
int C = 1000;
bool cmp(const pair<pair<int, int>, int> &a,
         const pair<pair<int, int>, int> &b) {
  if (a.first.first != b.first.first) return a.first.first < b.first.first;
  if (a.first.first % 2 == 0)
    return a.first.second > b.first.second;
  else
    return a.first.second < b.first.second;
}
int main(void) {
  int n;
  scanf("%d", &n);
  v.resize(n);
  for (int i = 0; i < n; i++) {
    scanf("%d%d", &v[i].first.first, &v[i].first.second);
    v[i].second = i;
    v[i].first.first /= C;
  }
  sort(v.begin(), v.end(), cmp);
  for (int i = 0; i < n; i++) {
    printf("%d ", v[i].second + 1);
  }
}
