'use strict'

// 比較関数の作成
function compare(a,b) {
  // sortの中身用の関数、値は1か-1をリターンするようにする
  // まず初期値rを定義
  let r = 0;

  // 次に街の名前(city)についての比較
  // -1は「今とは逆にして」って命令
  if(a.city < b.city){
  	r = -1;
  }
  // else ifで逆パターン、1は「そのままにしていいよ」って命令
  else if(a.city > b.city){
    r = 1;
  }
  // city名でも決まらないなら点数についての場合分け。小さい順だからこれでいい
  else if(a.point < b.point){
  	r = 1;
  }
  else if(a.point > b.point){
  	r = -1;
  }
  //結局-1か1をrで返す
  return r;
}
function Main(input) {
  // .split('\n')で行ごとに分ける
  let x = input.split('\n');
  // 最初の行が不要なので捨てる
  x.shift();
  // 答え用の配列arrayを作成する
  let array = [];
  array = x.map((elm,id)=>{
    let city = elm.split(" ")[0];
    let point = elm.split(" ")[1];
  	return {id: id + 1, city:city, point:parseInt(point)}
  });

  // 先に作ったcompare関数でソートをかける
  array.sort(compare);
  // idを最後に吐き出す（このfor文もforEachとかで記載したいな）
//  for(let i=0;i<N;i++){
//    console.log(array[i].id);
//  }
  array.forEach(element=>{
    console.log(element.id);
  });
  
}
Main(require("fs").readFileSync("/dev/stdin", "utf8"));
