#include #include #include using namespace std; #define maxn 111 int dp[maxn][maxn][maxn]; int num[maxn][maxn]; int ma[maxn][maxn]; int main() { int n, m, k; int i, j, x; while(scanf("%d %d %d",&n,&m,&k)!=EOF) { for(i=1;i<=n;i++) { for(j=1;j<=m;j++) scanf("%d",&ma[i][j]); } memset(dp,0,sizeof(dp)); for(i=1;i<=m;i++) dp[0][i][0] = 1; int s; for(i=1;i<=n;i++) { for(j=0;j<=k;j++) { if(dp[i-1][1][j]==1) { dp[i][1][j] = 1; if(j+ma[i][1]<=k) dp[i][1][j+ma[i][1]] = 1; } } for(j=2;j<=m;j++) { for(x=0;x<=k;x++) { if(dp[i-1][j][x]==1) { dp[i][j][x] = 1; if(x+ma[i][j]<=k) dp[i][j][x+ma[i][j]] = 1; } } for(x=0;x<=k;x++) { if(dp[i][j-1][x]==1) { dp[i][j][x] = 1; if(x+ma[i][j]<=k) dp[i][j][x+ma[i][j]] = 1; } } } } // printf("%d\n",dp[1][1][1]); int maxnum = 0; for(i=1;i<=m;i++) { for(j=0;j<=k;j++) if(dp[n][i][j]==1) maxnum = j; } printf("%d\n",maxnum); } return 0; }