#include <bits/stdc++.h>
using namespace std;
bool debug = true;
template <typename T1, typename T2>
ostream& operator<<(ostream& os, pair<T1, T2> ptt) {
  os << ptt.first << "," << ptt.second;
  return os;
}
template <typename T>
ostream& operator<<(ostream& os, vector<T> vt) {
  os << "{";
  for (int i = 0; i < vt.size(); i++) {
    os << vt[i] << " ";
  }
  os << "}";
  return os;
}
int n, m;
vector<int> a[100005];
vector<int> nei[500005];
int deg[500005];
map<int, int> vn[100005];
int vnc;
const int MAX = 1e9 + 7;
int getVN(int ln, int x) {
  if (vn[ln].count(x)) {
  } else {
    vn[ln][x] = vnc;
    vnc++;
    assert(vnc <= 500000);
  }
  return vn[ln][x];
}
void add(int x, int y) {
  nei[x].push_back(y);
  deg[y]++;
}
int main(int argc, char* argv[]) {
  ios::sync_with_stdio(0);
  cin >> n >> m;
  vnc = m;
  for (int i = 0; i < n; i++) {
    a[i].resize(m);
    for (int j = 0; j < m; j++) {
      cin >> a[i][j];
      if (a[i][j] != -1) {
        a[i][j]++;
      }
    }
  }
  for (int i = 0; i < n; i++) {
    vector<pair<int, int> > p;
    for (int j = 0; j < m; j++) {
      if (a[i][j] != -1) {
        p.push_back(make_pair(a[i][j], j));
      }
    }
    sort(p.begin(), p.end());
    for (int j = 0; j < p.size(); j++) {
      add(getVN(i, p[j].first), p[j].second);
      add(p[j].second, getVN(i, p[j].first + MAX));
    }
  }
  for (int i = 0; i < n; i++) {
    int last = -1;
    for (pair<int, int> x : vn[i]) {
      if (x.first > MAX) {
        break;
      }
      if (last != -1) {
        add(getVN(i, last + MAX), x.second);
      }
      last = x.first;
    }
  }
  queue<int> q;
  for (int i = 0; i < vnc; i++) {
    if (deg[i] == 0) {
      q.push(i);
    }
  }
  vector<int> ans;
  while (!q.empty()) {
    int last = q.front();
    q.pop();
    if (last < m) {
      ans.push_back(last + 1);
    }
    for (int to : nei[last]) {
      deg[to]--;
      if (deg[to] == 0) {
        q.push(to);
      }
    }
  }
  if (ans.size() != m) {
    cout << "-1";
  } else {
    for (int x : ans) {
      cout << x << endl;
    }
  }
  return 0;
}
