查不出错了
#include<bits/stdc++.h>
using namespace std;
const int N=3e4+6;
const int M=1e3+7;
const int IM=214748367;
const long long LLM=9223372036854775807;
inline int read()
{
int x=0,y=1;char c=getchar();
while(c<'0'||c>'9'){if(c=='-') y=-y;c=getchar();}
while(c>='0'&&c<='9'){x=x*10+(c^'0');c=getchar();}
return x*y;
}
int n,up,f[N],t[N][3];
signed main()
{
n=read();
for(int i=1;i<=n;i++)
for(int j=0;j<3;j++)
{
t[i][j]=read();
// if(!t[i][j]) t[i][j]=IM;
// puts("Gfd");
}
for(int i=1;i<=5*n;i++) f[i]=IM;
for(int i=1;i<=n;i++)
{
up+=max(t[i][0],t[i][2]);
// printf("%d\n",up);
for(int j=up;j>=0;j--)
{
if(j>=t[i][0]&&t[i][0]) f[j]=min(f[j],f[j-t[i][0]]);
if(j>=t[i][2]&&t[i][2]) f[j]=min(f[j],f[j-t[i][2]]+t[i][2]);
if(t[i][1]) f[j]=min(f[j],f[j]+t[i][1]);
}
}
// for(int i=0;i<=up;i++) printf("%d ",f[i]);
// puts("");
int mn=IM;
for(int i=1;i<=up;i++) mn=min(mn,max(f[i],i));
printf("%d\n",mn);
return 0;
}