#include <bits/stdc++.h>
void d333() {
  int a[1000][1000];
  int n, m, i, j, l;
  scanf("%d %d", &n, &m);
  for (i = 0; i < n; ++i)
    for (j = 0; j < m; ++j) scanf("%d", &a[i][j]);
  int val = 0;
  for (i = 0; i < n; ++i)
    for (j = i + 1; j < n; ++j) {
      int fst = 0, snd = 0;
      for (l = 0; l < m; ++l) {
        const int u = ((a[i][l]) < (a[j][l])) ? (a[i][l]) : (a[j][l]);
        ;
        if (fst < u) {
          snd = fst;
          fst = u;
        } else if (snd < u)
          snd = u;
      }
      val = ((val) < (snd)) ? (snd) : (val);
      ;
    }
  printf("%d", val);
}
int main() {
  d333();
  return EXIT_SUCCESS;
}
