#include<cstdio>
inline int read()
{
register int ret = 0;
register char f = 1, ch = getchar();
while (ch < '0' || ch > '9')
(ch == '-') ? f = 0 : 0, ch = getchar();
while (ch >= '0' && ch <= '9')
ret = (ret << 1) + (ret << 3) + (ch ^ 48), ch = getchar();
return f ? ret : -ret;
}
const int N = 59;
int p[N], w[N];
inline int min(int a, int b)
{
return a < b ? a : b;
}
int dp[N][N][2];
int main()
{
register int n = read(), c = read(), i, len, j, k, sum = 0;
for (i = 1;i <= n;++ i)
p[i] = read(), w[i] = read() + w[i - 1], sum += w[i], dp[i][i][0] = dp[i][i][1] = 1e9;
dp[c][c][0] = dp[c][c][1] = 0;
for (len = 2;len <= n;++ len)
{
for (i = 1;i + len - 1 <= n;++ i)
{
j = i + len - 1;
dp[i][j][0] =
min(dp[i + 1][j][0] + (p[i + 1] - p[i]) * (sum - w[j] + w[i]),
dp[i + 1][j][1] + (p[j] - p[i]) * (sum - w[j] + w[i]));
dp[i][j][1] =
min(dp[i][j - 1][1] + (p[j] - p[j - 1]) * (sum - w[j - 1] + w[i - 1]),
dp[i][j - 1][0] + (p[j] - p[i]) * (sum - w[j - 1] + w[i - 1]));
}
}
printf("%d", min(dp[1][n][0], dp[1][n][1]));
return 0;
}