#include<bits/stdc++.h>
#define db double
#define fs first
#define sc second
#define maxn 1005
#define ll long long
using namespace std;
int n,k,d[maxn],sum[maxn];
struct data
{
ll s;
int c;
};
data a[maxn];
ll res;
typedef pair<int,int> II;
II c[maxn][maxn];
void tinh(int k)
{
d[k]++;
c[k][d[k]].fs=c[k][1].fs;
c[k][d[k]].sc=c[k][1].sc;
for (int i=2; i<=d[k]; ++i)
{
a[k].s+=((ll)(c[k][i].fs-c[k][i-1].fs)*(c[k][i].sc+c[k][i-1].sc));
}
if (a[k].s<0) a[k].s=-a[k].s;
}
bool cmp(const data &a,const data &b)
{
return a.s<b.s;
}
int main()
{
//freopen("TFIELD.inp","r",stdin);
ios::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
cin>>n>>k;
for (int i=1; i<=n; ++i)
{
cin>>d[i]>>a[i].c;
for (int j=1; j<=d[i]; ++j)
cin>>c[i][j].fs>>c[i][j].sc;
}
for (int i=1; i<=n; ++i) tinh(i);
sort(a+1,a+n+1,cmp);
sum[n+1]=1000000000;
for (int i=1; i<=n; ++i)
{
sum[0]=0;
for (int j=1; j<=n; ++j)
if (a[j].c!=i) sum[j]=sum[j-1]+1;
else sum[j]=sum[j-1];
int r=1;
for (int l=1;l<=n;++l)
{
while(sum[r+1]-sum[l-1]<=k)
++r;
res=max(res,a[r].s-a[l-1].s);
}
}
cout<<res/2;
if (res%2) cout<<".5";
else cout<<".0";
return 0;
}
I2luY2x1ZGU8Yml0cy9zdGRjKysuaD4KI2RlZmluZSBkYiBkb3VibGUKI2RlZmluZSBmcyBmaXJzdAojZGVmaW5lIHNjIHNlY29uZAojZGVmaW5lIG1heG4gMTAwNQojZGVmaW5lIGxsIGxvbmcgbG9uZwp1c2luZyBuYW1lc3BhY2Ugc3RkOwppbnQgbixrLGRbbWF4bl0sc3VtW21heG5dOwpzdHJ1Y3QgZGF0YQp7CiAgICAgICAgICAgIGxsIHM7CiAgICAgICAgICAgIGludCBjOwp9OwpkYXRhIGFbbWF4bl07CmxsIHJlczsKdHlwZWRlZiBwYWlyPGludCxpbnQ+IElJOwpJSSBjW21heG5dW21heG5dOwp2b2lkIHRpbmgoaW50IGspCnsKICAgICAgICAgICAgZFtrXSsrOwogICAgICAgICAgICBjW2tdW2Rba11dLmZzPWNba11bMV0uZnM7CiAgICAgICAgICAgIGNba11bZFtrXV0uc2M9Y1trXVsxXS5zYzsKICAgICAgICAgICAgZm9yIChpbnQgaT0yOyBpPD1kW2tdOyArK2kpCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgYVtrXS5zKz0oKGxsKShjW2tdW2ldLmZzLWNba11baS0xXS5mcykqKGNba11baV0uc2MrY1trXVtpLTFdLnNjKSk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgaWYgKGFba10uczwwKSBhW2tdLnM9LWFba10uczsKfQpib29sIGNtcChjb25zdCBkYXRhICZhLGNvbnN0IGRhdGEgJmIpCnsKICAgICAgICAgICAgcmV0dXJuIGEuczxiLnM7Cn0KaW50IG1haW4oKQp7CiAgICAgICAgICAgIC8vZnJlb3BlbigiVEZJRUxELmlucCIsInIiLHN0ZGluKTsKICAgICAgICAgICAgaW9zOjpzeW5jX3dpdGhfc3RkaW8oMCk7CiAgICAgICAgICAgIGNpbi50aWUoMCk7CiAgICAgICAgICAgIGNvdXQudGllKDApOwogICAgICAgICAgICBjaW4+Pm4+Pms7CiAgICAgICAgICAgIGZvciAoaW50IGk9MTsgaTw9bjsgKytpKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgIGNpbj4+ZFtpXT4+YVtpXS5jOwogICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGludCBqPTE7IGo8PWRbaV07ICsraikKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2luPj5jW2ldW2pdLmZzPj5jW2ldW2pdLnNjOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGZvciAoaW50IGk9MTsgaTw9bjsgKytpKSB0aW5oKGkpOwogICAgICAgICAgICBzb3J0KGErMSxhK24rMSxjbXApOwogICAgICAgICAgICBzdW1bbisxXT0xMDAwMDAwMDAwOwogICAgICAgICAgICBmb3IgKGludCBpPTE7IGk8PW47ICsraSkKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICBzdW1bMF09MDsKICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChpbnQgaj0xOyBqPD1uOyArK2opCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChhW2pdLmMhPWkpIHN1bVtqXT1zdW1bai0xXSsxOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHN1bVtqXT1zdW1bai0xXTsKICAgICAgICAgICAgICAgICAgICAgICAgaW50IHI9MTsKICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChpbnQgbD0xO2w8PW47KytsKQogICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdoaWxlKHN1bVtyKzFdLXN1bVtsLTFdPD1rKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArK3I7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcz1tYXgocmVzLGFbcl0ucy1hW2wtMV0ucyk7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICBjb3V0PDxyZXMvMjsKICAgICAgICAgICAgaWYgKHJlcyUyKSBjb3V0PDwiLjUiOwogICAgICAgICAgICBlbHNlIGNvdXQ8PCIuMCI7CiAgICAgICAgICAgIHJldHVybiAwOwp9Cg==