#include <iostream>
struct Elev {
   double h;
   char name[256];
} a[100];
int n, sol[100], used[100];

void display() {
  for(int i = 1; i <= n; ++i) printf("%s ", a[sol[i]].name);
  printf("\n");
}
void bk(int k) {
    if(k>n) display();
    else
    for(int i = 1; i <= n; ++i) {
        if(!used[i]) {
          if( (k == 1) || (k >1 && a[i].h >= a[ sol[k-1] ].h)) {
          sol[k] = i;
          used[i] = 1;
          bk(k+1);
          used[i] = 0; }
        }
    }
}
int main() {
  double x;
  char name[256];
  n = 3;
  std::cout<<"elevi=";
  std::cin>>n;
  for(int i = 1; i <= n; ++i) scanf("%s %lf", a[i].name, &a[i].h);

  bk(1);
}
