#include <bits/stdc++.h>
using namespace std;
#define int long long
int N,T;
vector<int> arr;
bool possible(int dist){
int low=arr[0]-dist, up=arr[0]+dist;
for(int i=0;i<N;i++){
int l=arr[i]-dist, u=arr[i]+dist;
if(u<low){
u+=T; l+=T;
}
else if(l>up){
u-=T; l-=T;
}
low=max(low,l);
up=min(up,u);
}
if(low>up)return false;
return true;
}
signed main(){
ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);
cin>>N>>T;
arr.resize(N);
for(int i=0;i<N;i++){
cin>>arr[i];
arr[i]%=T;
}
int left=0,right=(int)ceil(double(T)/2);
while(right-left>1){
int mid=(left+right)/2;
if(possible(mid)){
right=mid;
}
else{
left=mid;
}
}
if(!possible(left)){
cout<<right;
}
else{
cout<<left;
}
}