#include <bits/stdc++.h>
#define L(i,j,k) for(int i=(j);i<=(k);i++)
#define R(i,j,k) for(int i=(j);i>=(k);i--)
#define all(x) x.begin(),x.end()
#define sz(a) ((int)a.size())
#define pb push_back
using namespace std;
typedef long long ll;
ll get(vector<ll>md){
ll r1=*max_element(all(md));
ll l1=*min_element(all(md));
ll f=(r1+l1)/2;
ll f1=0;
L(i,0,sz(md)-1){
f1=max(f1,llabs(md[i]-f));
}
return f1;
}
int main(){
ll n,t;cin>>n>>t;
vector<ll>a(n);
L(i,0,n-1)cin>>a[i];
vector<ll>md(n);
L(i,0,n-1){
md[i]=a[i]%t;
}
ll op1=get(md);
ll cut=(*max_element(all(md))+*min_element(all(md)))/2;
ll cut2=(*max_element(all(md))+*min_element(all(md)))/2+1;
ll cut3=(*max_element(all(md))+*min_element(all(md)))/2-1;
vector<ll>md2(n),md3(n),md4(n);
md2=md,md3=md,md4=md;
L(i,0,n-1){
if(md[i]>=cut){
md2[i]-=t;
}
if(md[i]>=cut2){
md3[i]-=t;
}
if(md[i]>=cut3){
md4[i]-=t;
}
}
ll op2=get(md2);
ll op3=get(md3);
ll op4=get(md4);
cout<<min({op1,op2,op3,op4})<<endl;
}