uses math;
const fi='';
fo='';
maxn=1000+3;
type
dinh =record
x,y:longint;
end;
arr1 =array[1..maxn] of dinh;
var a :array[1..maxn,1..maxn] of dinh;
s :array[1..maxn] of int64;
i,j,n,m,k :longint;
c :array[1..maxn] of longint;
sodinh :array[1..maxn] of longint;
khoang :array[1..maxn] of int64;
res :int64;
dem :array[1..maxn] of longint;
procedure enter;
begin
assign(input,fi);reset(input);
read(m,k);
for i:=1 to m do
begin
read(sodinh[i],c[i]);
for j:=1 to sodinh[i] do read(a[i,j].x,a[i,j].y);
end;
close(input);
end;
procedure swap(var x,y:int64);
var tg :int64;
begin
tg:=x;x:=y;y:=tg;
end;
procedure swap2(var x,y:longint);
var tg :longint;
begin
tg:=x;x:=y;y:=tg;
end;
procedure qs(l,r:longint);
var x:extended;
i,j:longint;
begin
i:=l;j:=r;
x:=s[(l+r) div 2];
repeat
while x<s[i] do inc(i);
while x>s[j] do dec(j);
if i<=j then
begin
swap(s[i],s[j]);
swap2(c[i],c[j]);
inc(i);dec(j);
end;
until i>j;
if i<r then qs(i,r);
if j>l then qs(l,j);
end;
function dientich(p:arr1;n:longint):int64;
var i :longint;
begin
dientich := 0;
p[n+1] := p[1];
for i:=1 to n do
dientich:= dientich + int64( (p[i+1].x-p[i].x) )*(p[i+1].y+p[i].y);
dientich:= abs(dientich){/2};
end;
procedure tinhs;
var i:longint;
begin
for i:=1 to m do
s[i]:=dientich(a[i],sodinh[i]);
end;
procedure chuanbi;
begin
sodinh[n+1]:=4;
a[n+1,1].x:=1;
a[n+1,1].y:=1;
a[n+1,2].x:=1;
a[n+1,2].y:=1;
a[n+1,3].x:=1;
a[n+1,3].y:=1;
a[n+1,4].x:=1;
a[n+1,4].y:=1;
end;
procedure process;
var maxc,sokhoang :longint;
dientich :int64;
begin
tinhs;
s[m+1]:=0;
qs(1,m+1);
for i:=1 to m do
khoang[i]:=s[i]-s[i+1];
for i:=1 to m do
begin
fillchar(dem,sizeof(dem),0); dientich := 0; maxc :=1; sokhoang :=1;
inc(dem[c[i]]);
dientich := dientich + khoang[i]; if dientich>res then res := dientich;
for j := i+1 to m do
begin
inc(dem[c[j]]); inc(sokhoang);
maxc := max(maxc,dem[c[j]]);
if sokhoang-maxc<=k then
begin
dientich := dientich + khoang[j];
if dientich>res then res := dientich;
end else break;
end;
end;
end;
procedure print;
begin
assign(output,fo);rewrite(output);
write(res{:0:1} div 2);
if odd(res) then
write('.5') else write('.0');
close(output);
end;
begin
enter;
process;
print;
end.
dXNlcyAgICBtYXRoOwpjb25zdCAgIGZpPScnOwogICAgICAgIGZvPScnOwogICAgICAgIG1heG49MTAwMCszOwp0eXBlCiAgICAgICAgZGluaCAgICA9cmVjb3JkCiAgICAgICAgICAgICAgICAgICAgICAgIHgseTpsb25naW50OwogICAgICAgICAgICAgICAgICAgICAgICBlbmQ7CiAgICAgICAgYXJyMSAgICA9YXJyYXlbMS4ubWF4bl0gb2YgZGluaDsKdmFyICAgICBhICAgICAgIDphcnJheVsxLi5tYXhuLDEuLm1heG5dIG9mIGRpbmg7CiAgICAgICAgcyAgICAgICA6YXJyYXlbMS4ubWF4bl0gb2YgaW50NjQ7CiAgICAgICAgaSxqLG4sbSxrICAgICAgIDpsb25naW50OwogICAgICAgIGMgICAgICAgOmFycmF5WzEuLm1heG5dIG9mIGxvbmdpbnQ7CiAgICAgICAgc29kaW5oICA6YXJyYXlbMS4ubWF4bl0gb2YgbG9uZ2ludDsKICAgICAgICBraG9hbmcgIDphcnJheVsxLi5tYXhuXSBvZiBpbnQ2NDsKICAgICAgICByZXMgICAgIDppbnQ2NDsKICAgICAgICBkZW0gICAgIDphcnJheVsxLi5tYXhuXSBvZiBsb25naW50Owpwcm9jZWR1cmUgZW50ZXI7CmJlZ2luCiAgICAgICAgYXNzaWduKGlucHV0LGZpKTtyZXNldChpbnB1dCk7CiAgICAgICAgcmVhZChtLGspOwogICAgICAgIGZvciBpOj0xIHRvIG0gZG8KICAgICAgICAgICAgICAgIGJlZ2luCiAgICAgICAgICAgICAgICAgICAgICAgIHJlYWQoc29kaW5oW2ldLGNbaV0pOwogICAgICAgICAgICAgICAgICAgICAgICBmb3Igajo9MSB0byBzb2RpbmhbaV0gZG8gcmVhZChhW2ksal0ueCxhW2ksal0ueSk7CiAgICAgICAgICAgICAgICBlbmQ7CiAgICAgICAgY2xvc2UoaW5wdXQpOwplbmQ7CnByb2NlZHVyZSBzd2FwKHZhciB4LHk6aW50NjQpOwp2YXIgICAgIHRnICAgICAgOmludDY0OwpiZWdpbgogICAgICAgIHRnOj14O3g6PXk7eTo9dGc7CmVuZDsKcHJvY2VkdXJlIHN3YXAyKHZhciB4LHk6bG9uZ2ludCk7CnZhciAgICAgdGcgICAgICA6bG9uZ2ludDsKYmVnaW4KICAgICAgICB0Zzo9eDt4Oj15O3k6PXRnOwplbmQ7CnByb2NlZHVyZSBxcyhsLHI6bG9uZ2ludCk7CnZhciAgICAgeDpleHRlbmRlZDsKICAgICAgICBpLGo6bG9uZ2ludDsKYmVnaW4KICAgICAgICBpOj1sO2o6PXI7CiAgICAgICAgeDo9c1sobCtyKSBkaXYgMl07CiAgICAgICAgcmVwZWF0CiAgICAgICAgICAgICAgICB3aGlsZSB4PHNbaV0gZG8gaW5jKGkpOwogICAgICAgICAgICAgICAgd2hpbGUgeD5zW2pdIGRvIGRlYyhqKTsKICAgICAgICAgICAgICAgIGlmIGk8PWogdGhlbgogICAgICAgICAgICAgICAgICAgICAgICBiZWdpbgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN3YXAoc1tpXSxzW2pdKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzd2FwMihjW2ldLGNbal0pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluYyhpKTtkZWMoaik7CiAgICAgICAgICAgICAgICAgICAgICAgIGVuZDsKICAgICAgICB1bnRpbCBpPmo7CiAgICAgICAgaWYgaTxyIHRoZW4gcXMoaSxyKTsKICAgICAgICBpZiBqPmwgdGhlbiBxcyhsLGopOwplbmQ7CmZ1bmN0aW9uIGRpZW50aWNoKHA6YXJyMTtuOmxvbmdpbnQpOmludDY0Owp2YXIgICAgIGkgICAgICAgOmxvbmdpbnQ7CmJlZ2luCiAgICAgICAgZGllbnRpY2ggOj0gMDsKICAgICAgICBwW24rMV0gOj0gcFsxXTsKICAgICAgICBmb3IgaTo9MSB0byBuIGRvCiAgICAgICAgICAgICAgICBkaWVudGljaDo9IGRpZW50aWNoICsgaW50NjQoIChwW2krMV0ueC1wW2ldLngpICkqKHBbaSsxXS55K3BbaV0ueSk7CiAgICAgICAgZGllbnRpY2g6PSBhYnMoZGllbnRpY2gpey8yfTsKZW5kOwpwcm9jZWR1cmUgdGluaHM7CnZhciAgICAgaTpsb25naW50OwpiZWdpbgogICAgICAgIGZvciBpOj0xIHRvIG0gZG8KICAgICAgICAgICAgICAgIHNbaV06PWRpZW50aWNoKGFbaV0sc29kaW5oW2ldKTsKZW5kOwpwcm9jZWR1cmUgY2h1YW5iaTsKYmVnaW4KICAgICAgICBzb2RpbmhbbisxXTo9NDsKICAgICAgICBhW24rMSwxXS54Oj0xOwogICAgICAgIGFbbisxLDFdLnk6PTE7CiAgICAgICAgYVtuKzEsMl0ueDo9MTsKICAgICAgICBhW24rMSwyXS55Oj0xOwogICAgICAgIGFbbisxLDNdLng6PTE7CiAgICAgICAgYVtuKzEsM10ueTo9MTsKICAgICAgICBhW24rMSw0XS54Oj0xOwogICAgICAgIGFbbisxLDRdLnk6PTE7CmVuZDsKcHJvY2VkdXJlIHByb2Nlc3M7CnZhciAgICAgbWF4Yyxzb2tob2FuZyAgICAgICAgOmxvbmdpbnQ7CiAgICAgICAgZGllbnRpY2ggICAgICAgIDppbnQ2NDsKYmVnaW4KICAgICAgICB0aW5oczsKICAgICAgICBzW20rMV06PTA7CiAgICAgICAgcXMoMSxtKzEpOwogICAgICAgIGZvciBpOj0xIHRvIG0gZG8KICAgICAgICAgICAgICAgIGtob2FuZ1tpXTo9c1tpXS1zW2krMV07CiAgICAgICAgZm9yIGk6PTEgdG8gbSBkbwogICAgICAgICAgICAgICAgYmVnaW4KICAgICAgICAgICAgICAgICAgICAgICAgZmlsbGNoYXIoZGVtLHNpemVvZihkZW0pLDApOyBkaWVudGljaCA6PSAwOyBtYXhjIDo9MTsgc29raG9hbmcgOj0xOwogICAgICAgICAgICAgICAgICAgICAgICBpbmMoZGVtW2NbaV1dKTsKICAgICAgICAgICAgICAgICAgICAgICAgZGllbnRpY2ggOj0gZGllbnRpY2ggKyBraG9hbmdbaV07IGlmIGRpZW50aWNoPnJlcyB0aGVuIHJlcyA6PSBkaWVudGljaDsKICAgICAgICAgICAgICAgICAgICAgICAgZm9yIGogOj0gaSsxIHRvIG0gZG8KICAgICAgICAgICAgICAgICAgICAgICAgYmVnaW4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmMoZGVtW2Nbal1dKTsgaW5jKHNva2hvYW5nKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXhjIDo9IG1heChtYXhjLGRlbVtjW2pdXSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgc29raG9hbmctbWF4Yzw9ayB0aGVuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiZWdpbgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaWVudGljaCA6PSBkaWVudGljaCArIGtob2FuZ1tqXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgZGllbnRpY2g+cmVzIHRoZW4gcmVzIDo9IGRpZW50aWNoOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kIGVsc2UgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgIGVuZDsKICAgICAgICAgICAgICAgIGVuZDsKZW5kOwpwcm9jZWR1cmUgcHJpbnQ7CmJlZ2luCiAgICAgICAgYXNzaWduKG91dHB1dCxmbyk7cmV3cml0ZShvdXRwdXQpOwogICAgICAgIHdyaXRlKHJlc3s6MDoxfSBkaXYgMik7CiAgICAgICAgaWYgb2RkKHJlcykgdGhlbgogICAgICAgICAgICAgICAgd3JpdGUoJy41JykgZWxzZSB3cml0ZSgnLjAnKTsKICAgICAgICBjbG9zZShvdXRwdXQpOwplbmQ7CmJlZ2luCiAgICAgICAgZW50ZXI7CiAgICAgICAgcHJvY2VzczsKICAgICAgICBwcmludDsKZW5kLg==