#include <bits/stdc++.h>
using namespace std;
int AA[100005], PP[100005], *A, *P, *a[100005], *p[100005], h[100005],
    q[100005], c[100005], v[100005], w[100005], cnt[100005], o[100005], n, m,
    len, tot;
void Swap(int x, int y) { swap(h[x], h[y]), swap(q[h[x]], q[h[y]]); }
void up(int i) {
  while (i > 1 && c[h[i]] < c[h[i / 2]]) Swap(i, i / 2), i /= 2;
}
void down(int i) {
  while (i * 2 <= len) {
    int j = c[h[i]] < c[h[i * 2]] ? i : i * 2;
    if (i * 2 + 1 <= len && c[h[i * 2 + 1]] <= c[h[j]]) j = i * 2 + 1;
    if (i == j) break;
    Swap(i, j);
    i = j;
  }
}
bool cmp(const int i, const int j) { return A[i] < A[j]; }
int main() {
  scanf("%d%d", &n, &m), len = m, A = AA, P = PP;
  for (int j = 0; j < m; j++) h[j + 1] = j, q[j] = j + 1, c[j] = n;
  for (int i = 0; i < n; i++) {
    a[i] = A, p[i] = P;
    for (int j = 0; j < m; j++) scanf("%d", a[i] + j), p[i][j] = j;
    sort(p[i], p[i] + m, cmp);
    int &k = w[i];
    while (a[i][p[i][k]] < 0 && k < m) c[p[i][k]]--, up(q[p[i][k]]), k++;
    v[i] = a[i][p[i][k]];
    while (a[i][p[i][k]] == v[i] && k < m)
      c[p[i][k]]--, up(q[p[i][k]]), k++, cnt[i]++;
    A += m, P += m;
  }
  while (len) {
    int x = h[1];
    if (c[x]) break;
    Swap(1, len), len--, down(1);
    o[tot++] = x;
    for (int i = 0; i < n; i++)
      if (a[i][x] == v[i]) {
        cnt[i]--;
        if (!cnt[i]) {
          int &k = w[i];
          v[i] = a[i][p[i][k]];
          while (a[i][p[i][k]] == v[i] && k < m)
            c[p[i][k]]--, up(q[p[i][k]]), k++, cnt[i]++;
        }
      }
  }
  if (len)
    puts("-1");
  else
    for (int j = 0; j < m; j++)
      printf("%d%s", o[j] + 1, j < m - 1 ? " " : "\n");
  return 0;
}
