import io.*;

class Top2056 extends Program {
  // Parte a.-
  void ordenarXcols(String[ ] a, int posini, int posfin,
                    int colini, int colfin) {
    int i= posini;
    while (i<=posfin) {
      // Buscamos la posicion del minimo en a[i], a[i+1], ..., a[posfin]
      int k= i;
      int j= i+1;
      while (j<=posfin) {
        String sj= substring(a[j], colini, colfin-colini+1);
        String sk= substring(a[k], colini, colfin-colini+1);
        if (compare(sj, sk)<0)
          k= j;
        j= j+1;
      }
      // intercambiamos a[i] con a[j]
      String aux= a[i];
      a[i]= a[k];
      a[k]= aux;
      i= i+1;
    }
  }
  // Parte b.-
  void run() {
    // Lee el archivo
    TextReader lect= new TextReader("notas.txt");
    String[] lins= new String[200];
    int n= 0;
    while (true) {
      String lin= lect.readLine();
      if (lect.eofReached())
        break;
      lins[n]= lin;
      n= n+1;
    }
    // el arreglo lins contiene todas las líneas del archivo
    // ordenamos por nota (columnas 30 a 31)
    ordenarXcols(lins, 0, n-1, 30, 31);
    // ordenamos los ultimos 20 (los mejores) por nombre (columnas 0 a 29)
    ordenarXcols(lins, n-20, n-1, 0, 29);
    // Desplegamos
    int i= n-20;
    while (i<n) {
      println(substring(lins[i], 0, 30));
      i= i+1;
    }
  }
}
