#include <bits/stdc++.h>
#define ALL(x) x.begin(),x.end()
#define forn(i,a,b) for(int i = a; i<b; i++)
using namespace std;
typedef long long ll;
ll actualres(multiset<ll> &s){
ll mini = *s.begin();
ll maxi = *(--s.end());
ll res = maxi-mini;
return res;
}
int main(){
ll n,t; cin>>n>>t;
vector<ll> a(n); forn(i,0,n) cin>>a[i];
sort(ALL(a));
ll opt = a[0];
forn(i,0,n){
ll cnt = a[i]-opt;
cnt/=t;
a[i]-=cnt*t;
}
sort(ALL(a));
multiset<ll> s;
forn(i,0,n) s.insert(a[i]);
ll res = actualres(s);
for(int i = n-1; i>=0; i--){
auto it = --s.end();
ll val = *it;
s.erase(it);
val-=t;
s.insert(val);
res=min(res,actualres(s));
}
cout<<(res+1)/2<<'\n';
return 0;
}