#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
struct student{
char name[10];
int height;
}stu[10000];
bool cmp(student a, student b){
if(a.height != b.height) return a.height < b.height;
else return strcmp(a.name, b.name) > 0;
}
void show(int start, int end){ //输出已经排好序的下标为[start,end)的人
int number = end - start;
for(int i = start + number % 2; i < end; i += 2) printf("%s ", stu[i].name);
for(int i = end - 1; i >= start; i -= 2){
printf("%s", stu[i].name);
if(i > start + 1) printf(" ");
}
return;
}
int main(){
int n, k, sNum = 0;
scanf("%d%d", &n, &k);
int numberPerRow = n / k;
while(n--) {
scanf("%s %d", stu[sNum].name, &stu[sNum].height);
sNum++;
}
sort(stu, stu + sNum, cmp); //按照条件排序
for(int i = 0; i < k; i++){
if(i == 0) show(numberPerRow * (k - 1), sNum);
else show(numberPerRow * (k - 1 - i), numberPerRow * (k - i));
if(i < k - 1) printf("\n");
}
return 0;
}