#include <stdio.h>
#include <stdlib.h>
#include <string.h>
typedef struct __LinkedList_ts {
char name[20];
int score;
struct __LinkedList_ts* next;
} LinkedList_ts;
LinkedList_ts* LinkedList_new(char* name, int score)
{
LinkedList_ts* result = NULL;
result = (LinkedList_ts*)malloc(sizeof(LinkedList_ts));
memcpy(result->name, name, strlen(name)*sizeof(char));
result->score = score;
result->next = NULL;
return result;
}
LinkedList_ts* LinkedList_add(LinkedList_ts* head, char* name, int score, int sort)
{
LinkedList_ts* result = NULL;
LinkedList_ts* curr = NULL;
LinkedList_ts* next = NULL;
LinkedList_ts* node = NULL;
node = LinkedList_new(name, score);
if (head == NULL) {
head = node;
} else {
for (curr=head; curr!=NULL; curr=curr->next) {
next = curr->next;
if (sort == 1) {
if (score < curr->score) {
node->next = head;
head = node;
break;
} else {
if (next == NULL) {
curr->next = node;
break;
} else {
if (score < next->score) {
curr->next = node;
node->next = next;
break;
} else {}
}
}
} else {
if (score > curr->score) {
node->next = head;
head = node;
break;
} else {
if (next == NULL) {
curr->next = node;
break;
} else {
if (score > next->score) {
curr->next = node;
node->next = next;
break;
} else {}
}
}
}
}
}
result = head;
return result;
}
int main() {
int n,sort,i;
char name[20] = {};
int score;
LinkedList_ts* head = NULL;
LinkedList_ts* curr = NULL;
scanf("%d\n%d", &n, &sort);
for (i=0; i<n; ++i) {
memset(name, 0, sizeof(char)*20);
scanf("%s %d", name, &score);
head = LinkedList_add(head, name, score, sort);
}
for (curr=head; curr!=NULL; curr=curr->next) {
printf("%s %d\n", curr->name, curr->score);
}
return 0;
}