#include <iostream>
#include <queue>
#include <algorithm>
#include <utility>
#include <set>
using namespace std;

int ary[100010];
int main(){
	priority_queue<pair<int,int> > que;
	int N,L,tim,hog;
	pair<int,int> pa;
	set<int> se;
	set<int>::iterator it;
	cin>>N>>L;
	for(int i=1;i<=N;i++){
		cin>>ary[i];
	}
	ary[0]=ary[N+1]=0;
	for(int i=1;i<=N;i++){
		if(ary[i-1]<ary[i]&&ary[i+1]<ary[i]){
			que.push(make_pair(ary[i],i));
		}
	}
	tim=0;
	while(!que.empty()){
		se.clear();
		pa=que.top();
		que.pop();
		tim=L-pa.first;
		ary[pa.second]=0;
		se.insert(pa.second-1);
		se.insert(pa.second+1);
		while(!que.empty()&&que.top().first==pa.first){
			ary[que.top().second]=0;
			se.insert(que.top().second-1);
			se.insert(que.top().second+1);
			que.pop();
		}
		for(it=se.begin();it!=se.end();it++){
			hog=(*it);
			if(hog>0&&hog<N+1&&ary[hog-1]<ary[hog]&&ary[hog+1]<ary[hog]){
				que.push(make_pair(ary[hog]-tim,hog));
			}
		}
	}
	cout<<tim<<endl;
	return 0;
}