#include <iostream>
#include <iomanip>
#include <cstdio>
#include <string>
#include <vector>
#include <array>
#include <math.h>
#include <ctype.h>
#include <algorithm>
using namespace std;
struct people {
string name;
int high;
} s[ 10000 ] ;
bool cmp ( people a, people b)
{
if ( a. high == b. high)
{
return a. name < b. name ? true : false;
}
return a. high > b. high ? true : false;
}
int main ( )
{
int n , temp, d, i, j, k;
string a[ 10000 ] ;
cin >> n >> k;
for ( i = 0 ; i < n; ++ i)
{
cin >> s[ i] . name >> s[ i] . high;
}
sort ( s, s + n, cmp) ;
int m = n / k;
int l = n - m * ( k - 1 ) ;
for ( i = 0 ; i < k; i++ )
{
if ( i == 0 )
{
temp = - 1 ;
a[ l / 2 ] = s[ 0 ] . name;
for ( j = 1 ; j < l; j++ )
{
a[ l / 2 + temp] = s[ j] . name;
if ( temp > 0 ) temp++ ;
temp = - temp;
}
for ( j = 0 ; j < l; j++ )
{
if ( j > 0 ) cout << " " ;
cout << a[ j] ;
}
cout << endl;
d = l;
continue ;
}
a[ m / 2 ] = s[ d++ ] . name;
temp = - 1 ;
for ( int j = 1 ; j < m; j++ )
{
a[ m / 2 + temp] = s[ d++ ] . name;
if ( temp > 0 ) temp++ ;
temp = - temp;
}
for ( int j = 0 ; j < m; j++ )
{
if ( j > 0 ) cout << " " ;
cout << a[ j] ;
}
cout << endl;
}
return 0 ;
}