#include <bits/stdc++.h>
int B, X, Y, N, M, A[1005][1005], Z;
int main() {
  scanf("%d%d", &N, &M);
  for (int i = 0; i < N; i++)
    for (int j = 0; j < M; j++) scanf("%d", &A[i][j]);
  for (int i = 0; i < N; i++)
    for (int j = i + 1; j < N; j++) {
      X = Y = 0;
      for (int k = 0; k < M; k++)
        if (A[i][k] > B && A[j][k] > B)
          if ((Z = A[i][k] < A[j][k] ? A[i][k] : A[j][k]) > Y)
            X = Y, Y = Z;
          else if (Z > X)
            X = Z;
      B = X > B ? X : B;
    }
  printf("%d", B);
}
