program malls;
const MAX=100000;
type elenco = array[0..Max-1] of qword;
var N, i :longint;
D : elenco;
K, maxdist, pos : qword;
procedure scambia (var x,y: qword);
var t:qword;
begin
t:=x;
x:=y;
y:=t;
end;
Procedure ordinamento (estremoi,estremos: qword; var v : elenco; ordinato:boolean);
var inf, sup, medio:qword;
pivot : qword;
begin
inf:=estremoi;
sup:=estremos;
medio:= (estremoi+estremos) div 2;
pivot:=v[medio];
repeat
if (ordinato) then
begin
while (v[inf]<pivot) do inf:=inf+1;
while (v[sup]>pivot) do sup:=sup-1;
end;
if inf<=sup then
begin
scambia(v[inf],v[sup]);
inf:=inf+1;
sup:=sup-1;
end;
until inf>sup;
if (estremoi<sup) then ordinamento(estremoi,sup,v,ordinato);
if (inf<estremos) then ordinamento(inf,estremos,v,ordinato);
end;
begin
readln(N,K);
for i:=0 to N-1 do read(D[i]); readln;
maxdist:=0;
ordinamento (0,N-1,D, true);
for i:= 0 to n - 1 do
begin
if (D[i + 1] - D[i]) >= maxdist then
begin
maxdist := D[i + 1] - D[i];
pos := D[i];
end;
if ((D[0] <> 0) and (D[0] >= max/2)) then
begin
maxdist := 0;
pos := 0;
end;
if (k - D[n - 1]) >= max/2 then
if (k - D[n - 1]) >= D[0] then
begin
maxdist := 0;
pos := k;
end;
end;
writeln ((max div 2 +1) + pos);
end.
cHJvZ3JhbSBtYWxsczsKY29uc3QgTUFYPTEwMDAwMDsKdHlwZSBlbGVuY28gPSBhcnJheVswLi5NYXgtMV0gb2YgcXdvcmQ7CnZhciBOLCBpIDpsb25naW50OwogICAgRCA6IGVsZW5jbzsKICAgIEssIG1heGRpc3QsIHBvcyA6IHF3b3JkOwogICAgCnByb2NlZHVyZSBzY2FtYmlhICh2YXIgeCx5OiBxd29yZCk7CnZhciB0OnF3b3JkOwpiZWdpbgogICB0Oj14OwogICB4Oj15OwogICB5Oj10OwplbmQ7ICAKUHJvY2VkdXJlIG9yZGluYW1lbnRvIChlc3RyZW1vaSxlc3RyZW1vczogcXdvcmQ7IHZhciB2IDogZWxlbmNvOyBvcmRpbmF0bzpib29sZWFuKTsKdmFyIGluZiwgc3VwLCBtZWRpbzpxd29yZDsKICAgIHBpdm90IDogcXdvcmQ7CmJlZ2luCiAgICBpbmY6PWVzdHJlbW9pOwogICAgc3VwOj1lc3RyZW1vczsKICAgIG1lZGlvOj0gKGVzdHJlbW9pK2VzdHJlbW9zKSBkaXYgMjsKICAgIHBpdm90Oj12W21lZGlvXTsKICAgIHJlcGVhdAogICAgICBpZiAob3JkaW5hdG8pIHRoZW4KICAgICAgICAgYmVnaW4KICAgICAgICAgICAgd2hpbGUgKHZbaW5mXTxwaXZvdCkgZG8gIGluZjo9aW5mKzE7CiAgICAgICAgICAgIHdoaWxlICh2W3N1cF0+cGl2b3QpIGRvICBzdXA6PXN1cC0xOwogICAgICAgICBlbmQ7CiAgICAgIGlmIGluZjw9c3VwIHRoZW4KICAgICAgIGJlZ2luCiAgICAgICAgIHNjYW1iaWEodltpbmZdLHZbc3VwXSk7CiAgICAgICAgIGluZjo9aW5mKzE7CiAgICAgICAgIHN1cDo9c3VwLTE7CiAgICAgICBlbmQ7CiAgICB1bnRpbCBpbmY+c3VwOwogICAgaWYgKGVzdHJlbW9pPHN1cCkgdGhlbiBvcmRpbmFtZW50byhlc3RyZW1vaSxzdXAsdixvcmRpbmF0byk7CiAgICBpZiAoaW5mPGVzdHJlbW9zKSB0aGVuIG9yZGluYW1lbnRvKGluZixlc3RyZW1vcyx2LG9yZGluYXRvKTsKZW5kOyAKYmVnaW4KCXJlYWRsbihOLEspOwoJZm9yIGk6PTAgdG8gTi0xIGRvIHJlYWQoRFtpXSk7IHJlYWRsbjsKCW1heGRpc3Q6PTA7CglvcmRpbmFtZW50byAoMCxOLTEsRCwgdHJ1ZSk7Cglmb3IgaTo9IDAgdG8gbiAtIDEgZG8KCSAgICAgICAgICAgICAgICBiZWdpbgoJICAgICAgICAgICAgICAgIAkgaWYgKERbaSArIDFdIC0gRFtpXSkgPj0gbWF4ZGlzdCB0aGVuIAoJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmVnaW4gCgkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF4ZGlzdCA6PSBEW2kgKyAxXSAtIERbaV07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9zIDo9IERbaV07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmQ7CiAgICAJCQkJCWlmICgoRFswXSA8PiAwKSBhbmQgKERbMF0gPj0gbWF4LzIpKSB0aGVuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmVnaW4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF4ZGlzdCA6PSAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb3MgOj0gMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmQ7CiAgICAJCQkJCWlmIChrIC0gRFtuIC0gMV0pID49IG1heC8yIHRoZW4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoayAtIERbbiAtIDFdKSA+PSBEWzBdIHRoZW4gCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJlZ2luCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF4ZGlzdCA6PSAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvcyA6PSBrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmQ7CiAgICAgICAgICAgICAgICAgICBlbmQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgd3JpdGVsbiAoKG1heCBkaXYgMiArMSkgKyBwb3MpOwplbmQu