#include <bits/stdc++.h>
using namespace std;
const int MAXN = 1e5 + 5;
int n, m, deg[MAXN];
vector<int> E[MAXN], sol;
int main() {
  ios_base::sync_with_stdio(false);
  cin.tie(0);
  cin >> n >> m;
  for (int tmp = 0; tmp < n; ++tmp) {
    vector<pair<int, int> > v;
    for (int j = 0; j < m; ++j) {
      int x;
      cin >> x;
      if (x != -1)
        v.push_back(pair<int, int>(x, j));
      else if (x == -1 && n == 1)
        v.push_back(pair<int, int>(x, j));
    }
    sort(v.begin(), v.end());
    if (n == 1) {
      for (int z = 0; z < m; ++z) cout << v[z].second + 1 << " ";
      return 0;
    }
    for (int i = 0; i < ((int)v.size()); ++i) {
      int start =
          lower_bound(v.begin(), v.end(), pair<int, int>(v[i].first + 1, -1)) -
          v.begin();
      for (int j = start; j < ((int)v.size()); ++j) {
        if (v[j].first != v[start].first) break;
        E[v[i].second].push_back(v[j].second);
        deg[v[j].second]++;
      }
    }
  }
  queue<int> Q;
  for (int i = 0; i < m; ++i)
    if (deg[i] == 0) {
      Q.push(i);
    }
  while (!Q.empty()) {
    int x = Q.front();
    Q.pop();
    sol.push_back(x);
    for (auto e : E[x]) {
      deg[e]--;
      if (deg[e] == 0) Q.push(e);
    }
  }
  if (((int)sol.size()) == m)
    for (auto it : sol) cout << it + 1 << " ";
  else
    cout << -1;
}
