#include<iostream>
#include<cstring>
#include<string>
#include<cstdio>
#include<queue>
#include<cmath>
#include<algorithm>
using namespace std;
int read(){
int flag=1;
int x=0;
char ch=getchar();
while(ch>'9'||ch<'0'){
if(ch=='-')flag=-1;
ch=getchar();
}
while(ch>'0'&&ch<'9'){
x=(x<<1)+(x<<3)+ch-'0';
ch=getchar();
}
return x*flag;
}
const int N=1e5;
int n,m;
int f[N][N];
int a[N][N];
int main(){
cin >>n>>m;
for(int i=1;i<=m;i++){
for(int j=1;j<=n;j++){
cin >>a[i][j];
if(j==1)f[i][1]=a[i][j];
}
}
for(int j=2;j<=n;j++){
for(int i=1;i<=m;i++){
f[i][j]=min((i==1?f[m][j-1]:f[i-1][j-1]),f[i][j-1]);
}
}
int maxx=-1;
for(int i=1;i<=m;i++){
maxx=max(maxx,f[i][m]);
}
cout <<maxx;
return 0;
}