#include<bits/stdc++.h>
using namespace std;

int n,val[100005][10],init[10];
bool life[35][6];

bool ok(int x)
{
	for(int i=1;i<init[5];i++)
		for(int j=1;j<=3;j++)
			life[i][j]=0;
	int now;
	for(int i=1;i<=n;i++)
	{
		now=0;
		for(int j=0;j<5;j++)
		{
			if(val[i][j]>=x)
				now+=init[j];
		}
		life[now][1]=1;
		for(int j=0;j<init[5];j++)
			for(int k=1;k<=2;k++)
				life[j|now][k+1]|=life[j][k];
	}
	return life[init[5]-1][3];
}

int main()
{
	init[0]=1;
	for(int i=1;i<=5;i++)
		init[i]=init[i-1]*2;
	scanf("%d",&n);
	for(int i=1;i<=n;i++)
		for(int j=0;j<5;j++)
			scanf("%d",&val[i][j]);
	int l=1,r=1e9,mid;
	life[0][1]=life[0][2]=life[0][3]=1; 
	while(l!=r)
	{
		mid=(l+r+1)/2;
		if(ok(mid))
			l=mid;
		else
			r=mid-1;
	}
	printf("%d\n",l);
	return 0;
}
#include<bits/stdc++.h>
using namespace std;
using ll = long long;
using vl = vector<ll>;
#define rep(i,n) for(int i=0;i<(n);i++)
#define rrep(i,n) for(int i=(n)-1;i>=0;i--)
#define rep1(i,n) for(int i=1;i<=(n);i++)
#define rrep1(i,n) for(int i=(n);i>0;i--)
#define fore(i_in,a) for (auto& i_in: a)
#define sz(x) (int)x.size()
#define all(x) x.begin(), x.end()
#define rall(x) x.rbegin(), x.rend()
#define fio() cin.tie(nullptr);ios::sync_with_stdio(false);
#define DEBUG_CTN(v) cerr<<#v<<":";for(auto itr=v.begin();itr!=v.end();itr++) cerr<<" "<<*itr; cerr<<endl
template<class T> bool chmax(T &a, const T &b) {if (a<b) { a = b; return true; } return false;}
template<class T> bool chmin(T &a, const T &b) {if (a>b) { a = b; return true; } return false;}
template<class T> void print(const T &t) { cout << t << "\n"; }
const ll INF = 1LL << 62;
const int iINF = 1 << 30;

int n;
vector<vl> X(3030,vl(5,0));

bool check(int t){
    set<int> s;
    rep(i,n) {
        int bit=0;
        fore(j,X[i]){
            bit<<=1; bit|=(j>=t);
        }
        s.insert(bit);
    }
    fore(x,s) fore(y,s) fore(z,s){
        if((x|y|z)==(1<<5)-1) return true;
    }
    return false;
}

int main() {
    fio(); cin>>n;
    rep(i,n) rep(j,5) cin>>X[i][j];
    ll ok=0,ng=1LL<<31;
    while(ng-ok>1){
        ll mid=(ok+ng)/2;
        if(check(mid)) ok=mid;
        else ng=mid;
    }
    print(ok);
}