Wa #13
#include<bits/stdc++.h>
#define ll long long
#define db double
using namespace std;
ll n,h,t,q[1001000],a;
db sum1[1001000],dp[1001000],sum2[1001000];
inline db X(ll i){return sum2[i];}
inline db Y(ll i){return dp[i];}
inline db slope(ll i,ll j){return (Y(i)-Y(j))/(X(i)-X(j));}
inline ll read()
{
ll k=0,f=0;char c=getchar();
for(;!isdigit(c);c=getchar()) f|=c=='-';
for(;isdigit(c);c=getchar()) k=(k<<1)+(k<<3)+(c^48);
return f?-k:k;
}
inline ll f(ll l,ll r,ll k)
{
ll ans=r;
while(l<=r)
{
ll m=(l+r)>>1;
if(slope(q[m],q[m+1])>k)
{
r=m-1;
ans=m;
}
else l=m+1;
}
return ans;
}
int main()
{
n=read(),a=read();
for(int i=1;i<=n;i++)
{
scanf("%lf %lf",&sum1[i],&sum2[i]);
sum1[i]+=sum1[i-1];
sum2[i]+=sum2[i-1];
}
h=t=1;
for(int i=1;i<=n;i++)
{
ll p=f(h,t,a+sum1[i]);
dp[i]=dp[q[p]]+a*(sum2[n]-sum2[q[p]])+sum1[i]*(sum2[i]-sum2[q[p]]);
while(h<t&&(Y(q[t]) - Y(q[t - 1])) * (X(i) - X(q[t])) >= (Y(i) - Y(q[t])) * (X(q[t]) - X(q[t - 1]))/*slope(q[t-1],q[t])>=slope(q[t],i)*/) t--;
q[++t]=i;
}
printf("%lld",(ll)dp[n]);
return 0;
}