#include<iostream>
#include<cstdio>
using namespace std;
int max(int i,int j,int k){
if(i>j)
return (i>k)?i:k;
else if(i>k)
return (i>j)?i:j;
else return (j>k)?j:k;
}
int min(int i,int j){
return (i>j)?i:j;
}
int main(){
int p,t;
float number;
while(scanf("%d%d",&p,&t)!=EOF){
int g1,g2,g3,gj;
scanf("%d%d",&g1,&g2);
if(abs(g1-g2)<=t)
number=(g1+g2)/2.0;
else {scanf("%d",&g3);
if(abs(g3-g2)<=t&&abs(g3-g1)<=t)
number=max(g1,g2,g3);
else if(abs(g3-g2)<=t||abs(g3-g1)<=t)
number=(min(abs(g3-g2),g3-g1)+g3)/2.0;
else {scanf("%d",&gj); number=gj;}
}
}
printf("%.1f\n",number);
return 0;
}