#include <bits/stdc++.h>
using namespace std;
const int N = 1000;
int g[N][N];
vector<int> rows[N];
vector<int> cols[N];
int num_less(const vector<int> &v, int val) {
  return lower_bound(v.begin(), v.end(), val) - v.begin();
}
int num_greater(const vector<int> &v, int val) {
  return v.end() - upper_bound(v.begin(), v.end(), val);
}
void sort_and_unique(vector<int> &v) {
  sort(v.begin(), v.end());
  v.erase(unique(v.begin(), v.end()), v.end());
}
int main() {
  ios::sync_with_stdio(false);
  cin.tie(nullptr);
  int n, m;
  cin >> n >> m;
  for (int i = 0; i < n; i++)
    for (int j = 0; j < m; j++) {
      cin >> g[i][j];
      rows[i].push_back(g[i][j]);
      cols[j].push_back(g[i][j]);
    }
  for (int i = 0; i < n; i++) sort_and_unique(rows[i]);
  for (int i = 0; i < m; i++) sort_and_unique(cols[i]);
  for (int i = 0; i < n; i++)
    for (int j = 0; j < m; j++) {
      const int cur = g[i][j];
      const int ans =
          max(num_less(rows[i], cur), num_less(cols[j], cur)) +
          max(num_greater(rows[i], cur), num_greater(cols[j], cur)) + 1;
      cout << ans << " \n"[j + 1 == m];
    }
}
