28pts QAQ
#include<bits/stdc++.h>
#define N 22000
using namespace std;
int n,head,tail,f[N];
long long Ans,maxn,X[N],d[N],Y[N];
double xl(long long xx,long long yy) {
return (double)((Y[xx]-Y[yy])/(X[xx]-X[yy]));
}
int main() {
scanf("%d",&n);
for(int i = 1; i <= n; i++) scanf("%lld%lld",&d[i],&X[i]);
for(int i = 1; i <= n/2; i++) swap(X[i],X[n+1-i]) , swap(d[i],d[n+1-i]);
for(int i = 1; i <= n; i++) X[i] = X[i] + X[i-1] , Ans += X[i] * d[i];
for(int i = 1; i <= n; i++) d[i] = d[i-1] + d[i] , Y[i] = X[i] * d[i-1];
head = tail = 1 , f[1] = 1;
for(int i = 2; i <= n; i++) {
while(head < tail && xl(f[head],f[head+1]) <= d[i-1]) ++head;
maxn = max(maxn,(d[n]-d[i-1]) * X[i] + (d[i-1] - d[f[head]-1]) * X[f[head]]);
while(head < tail && xl(f[tail-1],f[tail]) <= xl(f[tail],i)) --tail;
++tail , f[tail] = i;
}
printf("%lld\n",Ans-maxn);
return 0;
}