#include <stdio.h>
#include <string.h>
#include <stdlib.h>

// write your code here......
typedef struct book {
    char name[100];
    int price;
} book_t;

int main() {

    int n;
    scanf("%d", &n);

    char** book_name = (char**)malloc(n * sizeof(char*));
    int* book_price = (int*)malloc(n * sizeof(int));

    for (int i = 0; i < n; i++) {
        book_name[i] = (char*)malloc(100 * sizeof(char));
        scanf("%s %d", book_name[i], &book_price[i]);
    }

    // write your code here......
    book_t* books = (book_t*)malloc(n * sizeof(book_t));
    for (int i = 0; i < n; i++) {
        strcpy(books[i].name, book_name[i]);
        books[i].price = book_price[i];
    }

    // sort
    for (int i = 0; i < n; i++) {
        for (int j = 0; j < n - 1 - i; j++) {
            if (books[j].price > books[j + 1].price) {
                book_t temp = books[j];
                books[j] = books[j + 1];
                books[j + 1] = temp;
            }
        }
    }

    // print
    for (int i = 0; i < n; i++) {
        printf("%s\n", books[i].name);
    }

    for (int i = 0; i < n; i++) {
        free(book_name[i]);
    }
    free(book_name);
    free(book_price);

    free(books);
    return 0;
}