#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;
}