#include <bits/stdc++.h>
using namespace std;
const int INF = 1E9 + 7;
template <class C>
void mini(C& a4, C b4) {
  a4 = min(a4, b4);
}
template <class C>
void maxi(C& a4, C b4) {
  a4 = max(a4, b4);
}
int n, m, act, vis[1000007], v[1000007];
vector<int> G[1000007];
vector<int> post;
bool zle = false;
void go(int x) {
  vis[x] = 1;
  for (__typeof((G[x]).begin()) i = ((G[x]).begin()); i != (G[x]).end(); ++i) {
    if (vis[*i] == 1) {
      zle = true;
      return;
    }
    if (!vis[*i]) go(*i);
  }
  vis[x] = 2;
  if (x <= m) post.push_back(x);
}
int main() {
  ios_base::sync_with_stdio(false);
  cin >> n >> m;
  act = m + 1;
  for (int i = 0; i < (n); ++i) {
    for (int j = (1); j <= (m); ++j) cin >> v[j];
    vector<pair<int, int> > w;
    for (int j = (1); j <= (m); ++j)
      if (v[j] != -1) w.push_back(pair<int, int>(v[j], j));
    sort((w).begin(), (w).end());
    for (int j = 0; j < (((int)(w).size())); ++j) {
      if (j > 0 && w[j - 1].first != w[j].first) act++;
      G[act].push_back(w[j].second);
      G[w[j].second].push_back(act + 1);
    }
    act += 2;
  }
  for (int i = (1); i <= (m); ++i)
    if (!vis[i]) go(i);
  if (zle)
    cout << -1 << endl;
  else {
    reverse((post).begin(), (post).end());
    for (__typeof((post).begin()) i = ((post).begin()); i != (post).end(); ++i)
      cout << *i << " ";
    cout << endl;
  }
  return 0;
}
