#include <stdio.h>
#define MAXSIZE 30
typedef struct test {
char a[MAXSIZE];
int number;
} Grade;
int main() {
int n;
while ((scanf("%d", &n)) != EOF) {
int flag;
scanf("%d", &flag);
Grade G[n];
int i = 0;
int count = n;
int m = n;
int p = n;
while (n--) {
scanf("%s %d", G[i].a, &G[i].number);
i++;
}
if (flag == 1) {
while (m--) {
for (int k = 0; k < m; k++) {
if (G[k].number > G[k + 1].number) {
Grade Gn = G[k + 1];
G[k + 1] = G[k];
G[k] = Gn;
}
}
}
} else if (flag == 0) {
while (p--) {
for (int q = 0; q < p; q++) {
if (G[q].number <G[q + 1].number) {
Grade Gm = G[q + 1];
G[q + 1] = G[q];
G[q] = Gm;
}
}
}
} else {
printf("flag值输入错误\n");
return 0;
}
for (int j = 0; j < count; j++) {
printf("%s %d\n", G[j].a, G[j].number);
}
}
return 0;
}