#include #include using namespace std; #define REP(i,a) for (int i = 0; i < (a); i++) #define FOR(i,a,b) for (int i = (a); i <= (b); i++) #define ROF(i,a,b) for (int i = (a); i >= (b); i--) #define SZ(x) (int)(x).size() int n,k; string name[105]; int L[105],R[105]; vector G[105]; int day[105]; bool seen[105]; bool cuplat(int node) { if (seen[node]) return 0; seen[node] = 1; FOR(i,0,SZ(G[node])-1) { int d = G[node][i]; if (R[d] == 0 || cuplat(R[d])) { L[node] = d; R[d] = node; return 1; } } return 0; } int main() { ios_base::sync_with_stdio(false); cin >> n >> k; FOR(i,1,n) { cin >> name[i]; FOR(j,1,k) { cin >> day[j]; if (j < 3) continue; if (day[j] > day[j-1] && day[j-1] > day[j-2]) G[i].push_back(j); } } int cuplaj = 0; bool ok = 1; while (ok) { ok = 0; FOR(i,1,n) seen[i] = 0; FOR(i,1,n) if (L[i] == 0 && cuplat(i)) { ok = 1; cuplaj++; } } FOR(i,1,k) { if (R[i] == 0) cout << "none\n"; else cout << name[R[i]] << "\n"; } }