func_code_string: #include <bits/stdc++.h>   using namespace std;   int n, m, top, tot, ans[100005], in[200005], rtx;   int col;   struct column {     vector<int> a;     int id;     friend bool operator<(column X, column Y) { return X.a[col] < Y.a[col]; }   } empty;   vector<column> b;   vector<int> to[200005];   void toposort() {     queue<int> que;     for (int i = 0; i <= top; i++)       if (in[i] == 0) {         que.push(i);         if (i < m) ans[++rtx] = i;       }     while (!que.empty()) {       int cur = que.front();       que.pop();       tot++;       for (int i = 0; i < to[cur].size(); i++) {         in[to[cur][i]]--;         if (in[to[cur][i]] == 0) {           que.push(to[cur][i]);           if (to[cur][i] < m) ans[++rtx] = to[cur][i];         }       }     }   }   int main() {     cin >> n >> m;     top = m - 1;     for (int i = 1; i <= m; i++) {       b.push_back(empty);       b[i - 1].id = i - 1;     }     for (int i = 1, x; i <= n; i++) {       for (int j = 0; j < m; j++) {         cin >> x;         b[j].a.push_back(x);       }     }     for (int i = 0; i < n; i++) {       col = i;       sort(b.begin(), b.end());       vector<pair<int, int> > con;       for (int j = 0; j < m; j++)         if (b[j].a[i] != -1) {           int l = j;           while (j < m - 1 && b[j + 1].a[i] == b[j].a[i]) j++;           con.push_back(make_pair(l, j));         }       if (con.size() > 1)         for (int j = 0; j < con.size(); j++) {           if (j == 0) top++;           if (j == con.size() - 1) {             for (int k = con[j].first; k <= con[j].second; k++) {               in[b[k].id]++;               to[top].push_back(b[k].id);             }           } else {             top++;             for (int k = con[j].first; k <= con[j].second; k++) {               in[top]++;               in[b[k].id]++;               to[b[k].id].push_back(top);               to[top - 1].push_back(b[k].id);             }           }         }     }     toposort();     if (tot < top)       cout << -1;     else       for (int i = 1; i <= m; i++) cout << ans[i] + 1 <<    ;   }   