#include <iostream>
#include <vector>
#include <algorithm>
#include <stack>
#include <queue>
#include <tuple>
#include <math.h>
#include <cstring>
#include <bitset>
#include <set>
#include <map>
using namespace std;
using ll = long long;
using pii = pair<int,int>;
using piii = tuple<int,int,int>;
#define endl '\n'
#define f first
#define s second
#define all(x) begin(x),end(x)
int main(){
int n;cin >> n;
int m;cin >> m;
int mini = 1e9+10;
int maxi = 0;
vector<int> vc;
for(int i{};i < n;i++){
int g;cin >> g;
vc.emplace_back(g%m);
}
sort(all(vc));
int ans = 1e9+10;
ans = (vc.back()-vc.front()+1)/2;
for(int i{1};i < n;i++){
int val = (vc[i-1]+m-vc[i]+1)/2;
ans = min(ans,val);
}
cout << ans;
}