#include <bits/stdc++.h>
using namespace std;
using pii = pair<int, int>;
using ll = long long;
#define NMAX 110
#define KMAX 110

string name[NMAX];
int v[KMAX], l[NMAX], r[NMAX];
bool used[NMAX];

vector<int> adj[NMAX];

bool pair_up(int v)
{
	if(used[v]) return false;
	used[v] = true;

	for(auto u : adj[v])
		if(!l[u])
		{
			l[u] = v;
			r[v] = u;
			return true;
		}

	for(auto u : adj[v])
		if(pair_up(l[u]))
		{
			l[u] = v;
			r[v] = u;
			return true;
		}

	return false;
}

int main()
{
	#ifndef ONLINE_JUDGE
	freopen("data.in", "r", stdin);
	freopen("data.out", "w", stdout);
	#endif

	int i, j, n, k;
	bool found;

	cin >> n >> k;
	for(i = 1; i <= n; ++i)
	{
		cin >> name[i];
		for(j = 0; j < k; ++j) cin >> v[j];
		for(j = 0; j + 2 < k; ++j)
			if(v[j] < v[j + 1] && v[j + 1] < v[j + 2])
				adj[i].push_back(j + 3);
	}

	// matching
	while(true)
	{
		memset(used, 0, sizeof used);
		for(found = false, i = 1; i <= n; ++i)
			if(!r[i])
			{
				if(pair_up(i)) found = true;
			}

		if(!found) break;
	}

	for(i = 1; i <= k; ++i)
		if(l[i]) cout << name[l[i]] << '\n';
	else cout << "none\n";
	
	return 0;
}