use std::{cmp::Reverse, collections::BinaryHeap}; const LIMIT: usize = 1e5 as usize; fn main() { let mut nk = String::new(); std::io::stdin().read_line(&mut nk).ok(); let nk: Vec = nk.trim().split_whitespace().map(|s| s.parse().unwrap()).collect(); let n = nk[0]; let k = nk[1]; let teams = (0..n).map(|_| { let mut temp = String::new(); std::io::stdin().read_line(&mut temp).ok(); let temp: Vec = temp.trim().split_whitespace().map(|s| s.parse().unwrap()).collect(); (temp[0], temp[1], temp[2]-1) }) .collect::>(); let mut orders = vec![vec![]; LIMIT]; for i in 0..n { let (_, _, u) = teams[i]; orders[u].push(i); } for i in 0..LIMIT { orders[i].sort_by_key(|&j| (Reverse(teams[j].0), teams[j].1)); } let mut pque = BinaryHeap::new(); for v in orders.iter() { let limit = v.len(); for i in 0..limit { let team_idx = v[i]; let (s, p, _) = teams[team_idx]; pque.push((s, Reverse(i), Reverse(p), team_idx)); } } for _ in 0..k { let (_, _, _, team_idx) = pque.pop().unwrap(); println!("{}", team_idx); } }