#include #include #include #include #include #include #include #include #include #include #include using namespace std; using ll = long long; using ld = long double; using pint = pair; using pll = pair; #define MOD 1000000007LL #define INF 1000000000LL #define EPS 1e-10 #define FOR(i,n,m) for(ll i=n;i<(int)m;i++) #define REP(i,n) FOR(i,0,n) #define DUMP(a) REP(d,a.size()){cout<> n; vector item(n); REP(i, n) cin >> item[i].second >> item[i].first; sort(ALL(item)); reverse(ALL(item)); vector> dp(n + 1, vector(n + 1, INF * INF)); dp[0][0] = 0; FOR(i, 1, n + 1) REP(j, n + 1) { dp[i][j] = dp[i - 1][j]; if(j) dp[i][j] = min(dp[i][j], dp[i - 1][j - 1] + item[i].second + (j - 1) * item[i].first); } int need = n / 3 * 2 + (n % 3); ll ans = INF * INF; REP(i, n + 1) ans = min(ans, dp[i][need]); cout << ans << endl; return 0; } /* --------------------------------------- */