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

#define fi first
#define se second
#define repl(i,a,b) for(int i=(int)(a);i<(int)(b);i++)
#define rep(i,n) repl(i,0,n)
#define each(itr,v) for(auto itr:v)
#define pb(s) push_back(s)
#define mp(a,b) make_pair(a,b)
#define all(x) (x).begin(),(x).end()
#define dbg(x) cout<<#x"="<<x<<endl
#define maxch(x,y) x=max(x,y)
#define minch(x,y) x=min(x,y)
#define uni(x) x.erase(unique(all(x)),x.end())
#define exist(x,y) (find(all(x),y)!=x.end())
#define bcnt(x) bitset<32>(x).count()

typedef long long ll;
typedef unsigned long long ull;
typedef pair<int, int> P;
typedef pair<P, int> PPI;
typedef pair<ll, ll> PL;
typedef pair<P, ll> PPL;

#define INF INT_MAX/3

#define MAX_N 1000

int n,d;
int x,p[11][11];
int dp[11][111111];

int main(){
	cin.sync_with_stdio(false);
	cin>>n>>d>>x;
	rep(i,d)rep(j,n)cin>>p[i][j];
	memset(dp,-1,sizeof(dp));
	rep(i,n)dp[i][x]=x;
	rep(i,d)repl(sell,i+1,d)for(int j=100001;j>=0;j--){
		if(dp[i][j]==-1)continue;
		rep(k,n){
			if(j<p[i][k]||p[sell][k]-p[i][k]<0)continue;
			int prof=p[sell][k]-p[i][k];
			maxch(dp[sell][dp[i][j]+prof],dp[i][j]+prof);
			maxch(dp[i][j-p[i][k]],dp[i][j]+prof);
			//dbg(sell); dbg(j+prof);
		}
	}
	int res=0;
	rep(i,11)rep(j,111111)maxch(res,dp[i][j]);
	cout<<res<<endl;
	return 0;
}