#include <bits/stdc++.h>
using namespace std;
#define FOR(i,a,b) for(int i=(a);i<(b);++i)
#define rep(i,n)   FOR(i,0,n)
#define pb emplace_back
typedef long long ll;
typedef pair<int,int> pint;

int dp[2][101][10001];
int a[101],b[101],c[101];
int main(){
    int n,C,ai,bi;
    cin>>n>>C;
    rep(i,n){
        cin>>a[i]>>b[i]>>c[i];
    }
    memset(dp,-1,sizeof(dp));
    dp[0][0][0]=0;
    rep(i,n){
        rep(j,C+1)rep(k,i*100+1){
            if(dp[0][j][k]==-1) continue;
            if(j+c[i]<=C){
                int u=max(k+a[i],dp[0][j][k]+b[i]);
                int l=min(k+a[i],dp[0][j][k]+b[i]);
                dp[1][j+c[i]][u]=max(dp[1][j+c[i]][u],l);
                u=max(k+b[i],dp[0][j][k]+a[i]);
                l=min(k+b[i],dp[0][j][k]+a[i]);
                dp[1][j+c[i]][u]=max(dp[1][j+c[i]][u],l);            
            }
            dp[1][j][k]=max(dp[1][j][k],dp[0][j][k]);
        }
        swap(dp[0],dp[1]);
        memset(dp[1],-1,sizeof(dp[1]));
    }
    int mx=0;
    rep(i,C+1)rep(j,10001)if(dp[0][i][j]!=-1) mx=max(mx,dp[0][i][j]);
    cout<<mx<<endl;
    return 0;
}
