#include<iostream>
#include<cmath>
#include<cstring>
#include<cstdio>
#include<queue>
#include<algorithm>
using namespace std;
inline int read()
{
int s=0,w=1;
char ch=getchar();
while(ch<'0'||ch>'9'){if(ch=='-')w=-1;ch=getchar();}
while(ch>='0'&&ch<='9')s=s*10+(ch-'0'),ch=getchar();
return s*w;
}
int n,c,h[60],co[60],ans,f[60][60][2],s[60];
int min(int a,int b)
{
return a<b?a:b;
}
int max(int a,int b)
{
return a>b?a:b;
}
int main()
{
n=read();
c=read();
for(int i=1;i<=n;i++)
{
h[i]=read();
co[i]=read();
s[i]=s[i-1]+co[i];
}
memset(f,0x3f3f,sizeof(f));
f[c][c][0]=0;
f[c][c][1]=0;
for(int l=2;l<=n;l++)
{
for(int i=1;i+l-1<=n;i++)
{
int j=i+l-1;
f[i][j][0]=min(f[i+1][j][0]+(h[i+1]-h[i])*(s[n]-s[j]+s[i]),
f[i+1][j][1]+(h[j]-h[i])*(s[n]-s[j]+s[i]));
f[i][j][1]=min(f[i][j-1][1]+(h[j]-h[j-1])+(s[n]-s[j-1]+s[i-1]),
f[i][j-1][0]+(h[j]-h[i])*(s[n]-s[j-1]+s[i-1]));
}
}
ans=min(f[1][n][0],f[1][n][1]);
cout<<ans;
return 0;
}