#include <bits/stdc++.h>
using namespace std;
int n;
struct P {
  int first, second, n;
};
P p[1001000];
int bl[1001000];
int sz;
bool c1(const P &a, const P &b) {
  return bl[a.first] == bl[b.first]
             ? ((bl[a.first] & 1) ? a.second < b.second : a.second > b.second)
             : a.first < b.first;
}
int main() {
  int i;
  scanf("%d", &n);
  sz = 1000;
  for (i = 1; i <= n; i++) {
    scanf("%d%d", &p[i].first, &p[i].second);
    p[i].n = i;
  }
  for (i = 0; i <= 1000000; i++) bl[i] = i / sz;
  sort(p + 1, p + n + 1, c1);
  for (i = 1; i <= n; i++) printf("%d ", p[i].n);
  return 0;
}
