#include <iostream>
#include <cmath>
#include <vector>
#include <algorithm>
using namespace std ;

struct mojtip{
	int br ;
	int k ;
};

/*int lokalni1(int a1, int a2, int k, int y){
	int n1,n2 ;
	if(k==1){
		n1=min(a1,a2)+min(y-a1,y-a2) ;
		n2=abs(a1-a2) ;
	}
	else{
		n1=abs(a1-a2) ;
		n2=min(a1,a2)+min(y-a1,y-a2) ;
	}
	return n1 ;
}
int lokalni2(int a1, int a2, int k, int y){
	int n1,n2 ;
	if(k==1){
		n1=min(a1,a2)+min(y-a1,y-a2) ;
		n2=abs(a1-a2) ;
	}
	else{
		n1=abs(a1-a2) ;
		n2=min(a1,a2)+min(y-a1,y-a2) ;
	}
	return n2 ;
}
*/
int main() {
	int x,y,i,a,a1,a2,n1=0,n2=0,j,smor=0,k ;
	mojtip m ;
	vector <mojtip> v ;
	cin >> x >> y ;
	int niz[y] ;
	for(i=0; i<y; i++){
		niz[i]=0 ;
//		cout << niz[i] << " ";
	}
	cin >> a ;
	m.br=a ;
	m.k=1 ;
	v.push_back(m) ;
	for(i=0; i<x-1; i++){
		cin >> a ;		
		m.br=a ;
		a1=v[i].br;
//		cout << a1 << endl;
		k=v[i].k;
		if(k==1){
			n1=min(a1,a)+min(y-a1,y-a) ;
			n2=abs(a1-a) ;
		}
		else{
			n1=abs(a1-a) ;
			n2=min(a1,a)+min(y-a1,y-a) ;
		}
//		cout << k << " "<< n1 << " " << n2 ;

	/*	for(j=i; (n1==n2)&&(j>=0); j--){
			
			n1=lokalni1(a1,a,k,y) ;
			n2=lokalni1(a1,a,k,y) ;
		}*/
	/*	while((n1==n2)&&(j>=0)){
			
			n2=lokalni2(v[j].br,m.br,v[j].k,y) ;
			j-- ;
		}*/
		if(n1>=n2){
			m.k=1 ;
			v.push_back(m) ;
		}
		else{
			m.k=-1 ;
			v.push_back(m) ;
		}
	}
	for(i=0; i<v.size(); i++){
	//	cout << v[i].br << " " << v[i].k << endl ;
		if(v[i].k==1){
			for(j=0; j<v[i].br; j++){
				niz[j]++ ;
			}
		}
		else{
			for(j=y-1; j>=v[i].br; j--){
				niz[j]++ ;
			}
		}
	}
	for(i=0; i<y; i++){
//		cout << niz[i] << endl ;
		smor+=niz[i]*(x-niz[i]) ;
	}
	
	cout << smor ;
	
	return 0;
}