program malls;
const MAX=100000;
type elenco = array[0..Max-1] of qword;
var N, i :longint;
D : elenco;
K, maxdist, pos : qword;
diff : array[0..MAX] of 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 write(D[i+1]- D[i],' '); end.
diff[0]:=D[0]; diff[N-1]:=K-D[N-1]; diff[1]:=D[2]-D[1]; writeln(diff[1]);
for i:=1 to N-2 do begin diff[i]:=D[i+1] - D[i]; write(diff[i],' '); end; writeln; end.
end.
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] >= maxdist/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) + pos);
end.
cHJvZ3JhbSBtYWxsczsKY29uc3QgTUFYPTEwMDAwMDsKdHlwZSBlbGVuY28gPSBhcnJheVswLi5NYXgtMV0gb2YgcXdvcmQ7CnZhciBOLCBpIDpsb25naW50OwogICAgRCA6IGVsZW5jbzsKICAgIEssIG1heGRpc3QsIHBvcyA6IHF3b3JkOwogICAgZGlmZiA6IGFycmF5WzAuLk1BWF0gb2YgcXdvcmQ7CiAgICAKcHJvY2VkdXJlIHNjYW1iaWEgKHZhciB4LHk6IHF3b3JkKTsKdmFyIHQ6cXdvcmQ7CmJlZ2luCiAgIHQ6PXg7CiAgIHg6PXk7CiAgIHk6PXQ7CmVuZDsgIApQcm9jZWR1cmUgb3JkaW5hbWVudG8gKGVzdHJlbW9pLGVzdHJlbW9zOiBxd29yZDsgdmFyIHYgOiBlbGVuY287IG9yZGluYXRvOmJvb2xlYW4pOwp2YXIgaW5mLCBzdXAsIG1lZGlvOnF3b3JkOwogICAgcGl2b3QgOiBxd29yZDsKYmVnaW4KICAgIGluZjo9ZXN0cmVtb2k7CiAgICBzdXA6PWVzdHJlbW9zOwogICAgbWVkaW86PSAoZXN0cmVtb2krZXN0cmVtb3MpIGRpdiAyOwogICAgcGl2b3Q6PXZbbWVkaW9dOwogICAgcmVwZWF0CiAgICAgIGlmIChvcmRpbmF0bykgdGhlbgogICAgICAgICBiZWdpbgogICAgICAgICAgICB3aGlsZSAodltpbmZdPHBpdm90KSBkbyAgaW5mOj1pbmYrMTsKICAgICAgICAgICAgd2hpbGUgKHZbc3VwXT5waXZvdCkgZG8gIHN1cDo9c3VwLTE7CiAgICAgICAgIGVuZDsKICAgICAgaWYgaW5mPD1zdXAgdGhlbgogICAgICAgYmVnaW4KICAgICAgICAgc2NhbWJpYSh2W2luZl0sdltzdXBdKTsKICAgICAgICAgaW5mOj1pbmYrMTsKICAgICAgICAgc3VwOj1zdXAtMTsKICAgICAgIGVuZDsKICAgIHVudGlsIGluZj5zdXA7CiAgICBpZiAoZXN0cmVtb2k8c3VwKSB0aGVuIG9yZGluYW1lbnRvKGVzdHJlbW9pLHN1cCx2LG9yZGluYXRvKTsKICAgIGlmIChpbmY8ZXN0cmVtb3MpIHRoZW4gb3JkaW5hbWVudG8oaW5mLGVzdHJlbW9zLHYsb3JkaW5hdG8pOwplbmQ7IApiZWdpbgoJcmVhZGxuKE4sSyk7Cglmb3IgaTo9MCB0byBOLTEgZG8gcmVhZChEW2ldKTsgcmVhZGxuOwoJbWF4ZGlzdDo9MDsKCW9yZGluYW1lbnRvICgwLE4tMSxELCB0cnVlKTsKCWZvciBpOj0wIHRvIE4tMSBkbyB3cml0ZShEW2krMV0tIERbaV0sJyAnKTsgZW5kLgoJCWRpZmZbMF06PURbMF07IGRpZmZbTi0xXTo9Sy1EW04tMV07IGRpZmZbMV06PURbMl0tRFsxXTsgd3JpdGVsbihkaWZmWzFdKTsKCWZvciBpOj0xIHRvIE4tMiBkbyBiZWdpbiBkaWZmW2ldOj1EW2krMV0gLSBEW2ldOyB3cml0ZShkaWZmW2ldLCcgJyk7IGVuZDsgd3JpdGVsbjsgZW5kLgoJCgkgZW5kLgoJZm9yIGk6PSAwIHRvIG4gLSAxIGRvCgkgICAgICAgICAgICAgICAgYmVnaW4KCSAgICAgICAgICAgICAgICAJIGlmIChEW2kgKyAxXSAtIERbaV0pID49IG1heGRpc3QgdGhlbiAKCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJlZ2luIAoJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1heGRpc3QgOj0gRFtpICsgMV0gLSBEW2ldOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvcyA6PSBEW2ldOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kOwogICAgCQkJCQlpZiAoKERbMF0gPD4gMCkgYW5kIChEWzBdID49IG1heGRpc3QvMikpIHRoZW4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiZWdpbgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXhkaXN0IDo9IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvcyA6PSAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZDsKICAgIAkJCQkJaWYgKGsgLSBEW24gLSAxXSkgPj0gbWF4LzIgdGhlbgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChrIC0gRFtuIC0gMV0pID49IERbMF0gdGhlbiAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmVnaW4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXhkaXN0IDo9IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9zIDo9IGs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZDsKICAgICAgICAgICAgICAgICAgIGVuZDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICB3cml0ZWxuICgobWF4IGRpdiAyKSArIHBvcyk7CmVuZC4K