#include <bits/stdc++.h>
using namespace std;
const int MAXN = 100010;
pair<int, int> p[MAXN], s[MAXN];
vector<int> g[MAXN], a[MAXN];
int u[MAXN], ans[MAXN], ans_sz;
bool cyc = false;
void dfs(int v) {
  u[v] = 1;
  for (int i = 0; i < (int)(g[v].size()); i++) {
    int to = g[v][i];
    if (u[to] == 1) cyc = true;
    if (!u[to]) dfs(to);
  }
  ans[ans_sz++] = v;
  u[v] = 2;
}
int main() {
  int n, m;
  cin >> n >> m;
  for (int i = 0; i < (int)(n); i++) {
    a[i].resize(m);
    for (int j = 0; j < (int)(m); j++) cin >> a[i][j];
  }
  int f = m;
  for (int i = 0; i < (int)(n); i++) {
    for (int j = 0; j < (int)(m); j++) p[j] = make_pair(a[i][j], j);
    sort(p, p + m);
    int sz = 0;
    for (int j = 0; j < (int)(m); j++) {
      int t = j;
      for (; t < m && p[j].first == p[t].first; t++)
        ;
      if (p[j].first == -1) {
        j = t - 1;
        continue;
      }
      if (j + 1 == t) {
        s[sz++] = make_pair(p[j].second, p[j].second);
        continue;
      }
      for (int k = j; k < t; k++) {
        g[f + 1].push_back(p[k].second);
        g[p[k].second].push_back(f);
      }
      s[sz++] = make_pair(f, f + 1);
      f += 2;
      j = t - 1;
    }
    if (sz > 1)
      for (int j = 0; j < (int)(sz - 1); j++)
        g[s[j + 1].first].push_back(s[j].second);
  }
  for (int i = 0; i < (int)(f); i++)
    if (!u[i]) dfs(i);
  if (cyc) {
    cout << "-1";
    return 0;
  }
  for (int i = 0; i < (int)(f); i++)
    if (ans[i] < m) cout << ans[i] + 1 << " ";
  return 0;
}
