#include #include #define int long long #define inf 0x3f3f3f3f3f3f3f3f #define maxn 2234 #define eps 1e-7 #define mod 1000000007 #define Mod 998244353 #define f(i,a,b) for(int i=a;i<=b;i++) #define r(i,a,b) for(int i=a;i>=b;i--) #define fx(i,a,b,x) for(int i=a;i<=b;i+=x) #define rx(i,a,b,x) for(int i=a;i>=b;i-=x) using namespace std; using namespace __gnu_cxx; using namespace __gnu_pbds; int T; int n,dp[maxn][maxn]; struct node{ int a,b; }x[maxn]; bool operator<(const node&x,const node&y){ return x.b>y.b; } int Min(int a,int b){ return ab?a:b; } void solve(){ scanf("%lld",&n); f(i,0,n-1)scanf("%lld%lld",&x[i].a,&x[i].b); sort(x,x+n); f(i,0,n) f(j,0,n)dp[i][j]=inf; dp[0][0]=0; f(i,0,n-1){ f(j,0,n/3){ dp[i+1][j+1]=Min(dp[i+1][j+1],dp[i][j]); dp[i+1][j]=Min(dp[i+1][j],dp[i][j]+x[i].a+x[i].b*(i-j)); } } printf("%lld\n",dp[n][n/3]); } signed main(){ T=1; // scanf("%lld",&T); while(T--)solve(); return 0; } /* TIME: 2026-04-22 21:30:52 PROBLEM: XMOJ P11388 AUTHOR: 2333_qwq Luogu uid 951212 */