#include <bits/stdc++.h>
using namespace std;
int n, m, i, j, f[1000020], t[1000020], p[1000020], w[1000020], in[1000020], q,
    st[1000020], vn, sp, ii, a[1000020], bn, ans[1000020], wn, idx,
    all[1000020], all0, x, last, nv;
pair<int, int> b[1000020];
set<pair<int, int> > S;
vector<int> v[1000020];
void addedge(int x, int y) {
  t[++ii] = y;
  p[ii] = f[x];
  f[x] = ii;
  ++in[y];
}
int main() {
  scanf("%d%d", &n, &m);
  for (i = 1; i <= n; i++) {
    for (j = 1; j <= m; j++) {
      scanf("%d", &x);
      v[i].push_back(x);
      if (x != -1) all[++all0] = x;
    }
  }
  nv = m;
  for (i = 1; i <= n; i++) {
    sp = 0;
    bn = 0;
    for (j = 1; j <= m; j++) {
      a[j] = v[i][j - 1];
      if (a[j] == -1) continue;
      b[++bn] = make_pair(a[j], j);
    }
    sort(b + 1, b + bn + 1);
    if (bn == 0) continue;
    ++nv;
    last = 1;
    addedge(nv, b[1].second);
    for (j = 2; j <= bn; j++)
      if (b[j].first == b[j - 1].first)
        addedge(nv, b[j].second);
      else {
        ++nv;
        while (last < j) {
          addedge(b[last].second, nv);
          ++last;
        }
        addedge(nv, b[j].second);
      }
  }
  for (i = 1; i <= nv; i++) S.insert(make_pair(in[i], i));
  for (i = 1; i <= nv; i++) {
    sp = 0;
    if (S.begin()->first != 0) {
      puts("-1");
      return 0;
    }
    vn = S.begin()->second;
    S.erase(S.begin());
    if (vn <= m) w[++wn] = vn;
    q = f[vn];
    while (q) {
      S.erase(S.find(make_pair(in[t[q]], t[q])));
      --in[t[q]];
      S.insert(make_pair(in[t[q]], t[q]));
      q = p[q];
    }
  }
  for (i = 1; i <= m; i++) printf("%d ", w[i]);
  puts("");
  return 0;
}
