#include<bits/stdc++.h>
using namespace std;

const int N=200010;
int n,a[N],m;

bool check(int x){
	for(int i=x*2+1;i<=2*n;i++) if(a[i]+a[2*n-i+2*x+1]<m) return false;
	return true;
}

int main(){
	scanf("%d %d",&n,&m);
	for(int i=1;i<=2*n;i++) scanf("%d",&a[i]);
	sort(a+1,a+1+2*n);
	int l=0,r=n,ans=0;
	while(l<=r){
		int mid=(l+r)/2;
		if(check(mid)) r=(ans=mid)-1;
		else l=mid+1;
	}
	int mmax=0;
	for(int i=1;i<=ans;i++) mmax=max(mmax,a[i]+a[2*ans-i+1]);
	for(int i=2*ans+1;i<=2*n;i++) mmax=max(mmax,a[i]+a[2*n-i+2*ans+1]-m);
	printf("%d\n",mmax);
}