#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;
}