#include #include #include #include using namespace std; bool ap[128]; char str[128][128]; int le[128], ri[128], a[128][128]; vector v[128]; int cupleaza (int nod) { if (ap[nod]) return 0; ap[nod] = 1; if (v[nod].size () == 0) return 0; for (int i = 0; i < v[nod].size (); ++i) { int it = v[nod][i]; if (!ri[it]) { le[nod] = it; ri[it] = nod; return 1; } } for (int i = 0; i < v[nod].size (); ++i) { int it = v[nod][i]; if (cupleaza (ri[it])) { le[nod] = it; ri[it] = nod; return 1; } } return 0; } int main () { //freopen ("file.in", "r", stdin); int n, k; scanf ("%d %d", &n, &k); for (int i = 1; i <= n; ++i) { scanf ("%s", &str[i]); for (int j = 1; j <= k; ++j) { scanf ("%d" , &a[i][j]); if (j >= 3) if (a[i][j] > a[i][j - 1] && a[i][j - 1] > a[i][j - 2]) v[j].push_back (i); } } int OK = 1; for (; OK;) { OK = 0; for (int i = 1; i <= k; ++i) ap[i] = false; for (int i = 1; i <= k; ++i) if (!le[i]) OK = max (OK, cupleaza (i)); } for (int i = 1; i <= k; ++i) if (!le[i]) printf ("none\n"); else puts (str[le[i]]); return 0; }