#include <bits/stdc++.h>
using namespace std;
int n;
int a[51][51], t[51], rezultat[51];
bool ocupat[51];
int main() {
  cin >> n;
  for (int i = 0; i < n; i++) {
    t[i] = 0;
    ocupat[i] = false;
  }
  int k = 0;
  for (int i = 0; i < n; i++) {
    for (int j = 0; j < n; j++) {
      cin >> a[i][j];
      if (ocupat[a[i][j]] == false) {
        t[k] = a[i][j];
        ocupat[a[i][j]] = true;
        k++;
      }
    }
  }
  bool schimbare = true;
  int aux;
  for (int i = 0; i < n; i++) {
    ocupat[i] = false;
  }
  while (schimbare == true) {
    schimbare = false;
    for (int i = 0; i < n - 1; i++) {
      if (t[i] < t[i + 1]) {
        aux = t[i];
        t[i] = t[i + 1];
        t[i + 1] = aux;
        schimbare = true;
      }
    }
  }
  bool gasit = false;
  for (int i = 0; i < n; i++) {
    for (int j = 0; j < n; j++) {
      if (a[i][j] == t[0]) {
        rezultat[i] = t[0];
        rezultat[j] = t[0] + 1;
        ocupat[i] = true;
        ocupat[j] = true;
        gasit = true;
        break;
      }
    }
    if (gasit == true) {
      break;
    }
  }
  for (int k = 1; k < n; k++) {
    gasit = false;
    for (int i = 0; i < n; i++) {
      for (int j = 0; j < n; j++) {
        if (a[i][j] == t[k]) {
          if (ocupat[i] == false && ocupat[j] == true) {
            rezultat[i] = a[i][j];
            ocupat[i] = true;
            gasit = true;
            break;
          }
          if (ocupat[j] == false && ocupat[i] == true) {
            rezultat[j] = a[i][j];
            ocupat[j] = true;
            gasit = true;
            break;
          }
        }
      }
      if (gasit == true) {
        break;
      }
    }
  }
  for (int i = 0; i < n; i++) cout << rezultat[i] << " ";
  return 0;
}
