#include <bits/stdc++.h>
using namespace std;
const int maxm = 201010;
int n, m, deg[2 * maxm], cnt = 0;
vector<int> adj[maxm];
vector<int> ans;
queue<int> q;
struct node {
  int val, id;
  bool friend operator<(node a, node b) { return a.val < b.val; }
};
node edge[maxm];
void addEdge(int x, int y) {
  deg[y]++;
  adj[x].push_back(y);
}
int main() {
  scanf("%d %d", &n, &m);
  for (int i = 0; i < n; i++) {
    for (int j = 0; j < m; j++) {
      scanf("%d", &edge[j].val);
      edge[j].id = j;
    }
    sort(edge, edge + m);
    for (int j = 0; j < m; j++) {
      if (edge[j].val < 0) continue;
      if (!j || edge[j].val != edge[j - 1].val) cnt++;
      addEdge(edge[j].id, m + cnt + 1);
      addEdge(m + cnt, edge[j].id);
    }
    cnt++;
  }
  for (int i = 0; i < m + cnt; i++)
    if (!deg[i]) q.push(i);
  while (!q.empty()) {
    int u = q.front();
    q.pop();
    if (u < m) ans.push_back(u);
    for (int i = 0; i < adj[u].size(); i++) {
      int v = adj[u][i];
      deg[v]--;
      if (!deg[v]) q.push(v);
    }
  }
  if (ans.size() < m)
    puts("-1");
  else {
    for (int i = 0; i < m; i++) printf("%d ", ans[i] + 1);
    puts("");
  }
  return 0;
}
