#include <cstdlib>
#include <cstdio>
#include <ctime>

const int MaxN = 1000100;

struct CoinPile
{
	int num, left, right;

	CoinPile(int n, int l, int r)
	{
		num = n; left = l; right = r;
	}
	CoinPile() {}
};

int n, k, x, pileNum, currIndex, nextIndex;
long long sol;
CoinPile coins[MaxN];

int main() 
{
	freopen("zetoni.in", "r", stdin);
	freopen("zetoni.out", "w", stdout);

	scanf("%d%d", &n, &k);
	for (int i = 1; i <= n; i++)
	{
		scanf("%d", &x);
		coins[i] = CoinPile(x, i - 1, i + 1);
	}
	coins[0] = CoinPile(k + 1, 0, 1);
	coins[n + 1] = CoinPile(k + 1, n, n + 1);

	sol = -1;
	currIndex = 1;
	pileNum = n + 2;
	while (pileNum > 2)
	{
		if (coins[ coins[currIndex].left ].num <= coins[ coins[currIndex].right ].num)
			nextIndex = coins[currIndex].left;
		else
			nextIndex = coins[currIndex].right;

		if (coins[nextIndex].num >= coins[currIndex].num)
		{
			sol += (coins[nextIndex].num - coins[currIndex].num);
			pileNum--;
			coins[ coins[currIndex].left ].right = coins[currIndex].right;
			coins[ coins[currIndex].right ].left = coins[currIndex].left;
		}

		currIndex = nextIndex;
	}

	printf("%lld\n", sol);
	return 0;
}
