module Main(main) where

import           Data.List (intercalate, sortBy)

-- | solve
-- (行数, 市名, 点数)
--
-- >>> solve [(1, "khabarovsk", 20), (2, "moscow", 10), (3, "kazan", 50), (4, "kazan", 35), (5, "moscow", 60), (6, "khabarovsk", 40)]
-- [3,4,6,1,5,2]
--
-- >>> solve [(1, "yakutsk", 10), (2, "yakutsk", 20), (3, "yakutsk", 30), (4, "yakutsk", 40), (5, "yakutsk", 50), (6, "yakutsk", 60), (7, "yakutsk", 70), (8, "yakutsk", 80), (9, "yakutsk", 90), (10, "yakutsk", 100)]
-- [10,9,8,7,6,5,4,3,2,1]
--
--
--
solve :: [(Int, String, Int)] -> [Int]
solve = map fst' . sortBy predicate


predicate :: (Int, String, Int) -> (Int, String, Int) -> Ordering
predicate (_, aname, apoint) (_, bname, bpoint) = case aname `compare` bname of
        EQ  -> (flip compare) apoint bpoint
        res -> res

fst' (a, _, _) = a


genTuple :: [[String]] -> [(Int, String ,Int)]
genTuple = zipWith (\n [s, p] -> (n, s, read p)) [1..]


main :: IO ()
main = do
    getLine
    input <- map words . lines <$> getContents
    let ts = genTuple input
        res = solve ts
    putStrLn . intercalate "\n" . map show $ res
