// #define _GLIBCXX_DEBUG // for STL debug (optional) #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std; using ll = long long int; using int64 = long long int; template void chmax(T &a, T b) {a = max(a, b);} template void chmin(T &a, T b) {a = min(a, b);} template void chadd(T &a, T b) {a = a + b;} int dx[] = {0, 0, 1, -1}; int dy[] = {1, -1, 0, 0}; const ll INF = 1001001001001001LL; const ll MOD = 1000000007LL; ll dp[100010][3][2]; int main() { int N; cin >> N; vector C(N), D(N); for(int i=0; i> C[i] >> D[i]; fill(dp[0][0], dp[N+1][0], INF); dp[0][0][0] = 0; // idx, 何個目 (min 2) か、手数料使ったか for(int i=0; i= 2 ? D[i] : 0) + (x ? C[i] : 0); chmin(dp[i+1][nj][nk], cost); } } if(k == 1) { // そこで区切る (ただし k = 0 なら無理) for(int x=0; x<2; x++) { int nj = 1; int nk = x; ll cost = dp[i][j][k] + C[i] + (x ? C[i] : 0); chmin(dp[i+1][nj][nk], cost); } } } } } ll ans = INF; for(int j=0; j<3; j++) { ans = min(ans, dp[N][j][1]); } cout << ans << endl; return 0; }