#include using namespace std; using pii = pair; using ll = long long; #define NMAX 110 #define KMAX 110 string name[NMAX]; int v[KMAX], l[NMAX], r[NMAX]; bool used[NMAX]; vector 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; }