#include <bits/stdc++.h>
using namespace std;
vector<pair<int, int> > auxlinhas[1003], auxcolunas[1003];
int linhas[1003][1003], colunas[1003][1003], maiorl[1003], maiorcol[1003];
int normal[1003][1003];
int n, m;
int main() {
  ios_base::sync_with_stdio(false);
  ;
  cin >> n >> m;
  for (int i = 0; i < n; i++) {
    for (int j = 0; j < m; j++) {
      cin >> normal[i][j];
      auxlinhas[i].push_back(make_pair(normal[i][j], j));
      auxcolunas[j].push_back(make_pair(normal[i][j], i));
    }
  }
  for (int i = 0; i < n; i++) sort(auxlinhas[i].begin(), auxlinhas[i].end());
  for (int j = 0; j < m; j++) sort(auxcolunas[j].begin(), auxcolunas[j].end());
  for (int i = 0; i < n; i++) {
    int contaux = 1;
    for (int j = 0; j < m; j++) {
      if (j != 0 and auxlinhas[i][j].first != auxlinhas[i][j - 1].first)
        contaux++;
      linhas[i][auxlinhas[i][j].second] = contaux;
    }
  }
  for (int j = 0; j < m; j++) {
    int contaux = 1;
    for (int i = 0; i < n; i++) {
      if (i != 0 and auxcolunas[j][i].first != auxcolunas[j][i - 1].first)
        contaux++;
      colunas[auxcolunas[j][i].second][j] = contaux;
    }
  }
  if (0)
    for (int i = 0; i < n; i++) {
      for (int j = 0; j < m; j++) cout << linhas[i][j];
      cout << endl;
    }
  if (0)
    for (int i = 0; i < n; i++) {
      for (int j = 0; j < m; j++) cout << colunas[i][j];
      cout << endl;
    }
  for (int i = 0; i < n; i++) {
    for (int j = 0; j < m; j++) {
      maiorl[i] = max(maiorl[i], linhas[i][j]);
      maiorcol[j] = max(maiorcol[j], colunas[i][j]);
    }
  }
  for (int i = 0; i < n; i++) {
    int resp = 0;
    for (int j = 0; j < m; j++) {
      if (linhas[i][j] > colunas[i][j]) {
        int dif = linhas[i][j] - colunas[i][j];
        cout << max(maiorl[i], maiorcol[j] + dif) << " ";
      } else {
        int dif = colunas[i][j] - linhas[i][j];
        cout << max(maiorl[i] + dif, maiorcol[j]) << " ";
      }
    }
    cout << endl;
  }
  return 0;
}
