var
a:array[0..350000] of extended;
n,h,l,i:longint;
le,ri,mi:extended;
functionmaxe(a,b:extended):extended;
beginif a>b thenexit(a)
elseexit(B);
end;
functionok(oo:extended):boolean;
var
cqy,lo,ve:extended;
i,l,k:longint;
begin
lo:=0;
cqy:=0;
k:=0;
for i:=1to n dobegin
lo:=0;
ve:=-maxlongint;
for l:=1to h dobegin
inc(k);
lo:=lo+a[k]-oo;
ve:=maxe(ve,lo);
end;
cqy:=cqy+ve;
end;
if cqy>=0thenexit(true)
elseexit(false);
end;
begin
readln(n,h);
for i:=1to n dobeginfor l:=1to h doread(a[i*h-h+l]);
readln;
end;
le:=0;
ri:=1000000000;
while le+0.0000001<ri dobegin
mi:=(le+ri)/2;
if ok(mi) then le:=mi
else ri:=mi;
end;
whilenot(ok(le)) do le:=le-0.00001;
writeln(le:0:4);
end.