#include<bits/stdc++.h>
using namespace std;
const int Maxn = 110;
int a[Maxn][Maxn],b[Maxn][Maxn],dp[Maxn][Maxn];
int main(){
int n,m;
scanf("%d %d",&n,&m);
for(int i=1,k;i<=n;i++)
{
scanf("%d",&k);
for(int j=1,l,r;j<=k;j++)
{
scanf("%d %d",&l,&r);
for(int p=l;p<=r;p++)
a[i][p] = l,b[i][p] = r;
}
}
for(int len = 1; len <= m; len++)
{
for(int l=1; l+len-1 <= m; l++)
{
int r = l+len-1;
for(int k=l; k<=r; k++)
{
int tmp = 0;
for(int i=1;i<=n;i++)
if( l <= a[i][k] && b[i][k] <= r )
tmp++;
dp[l][r] = max(dp[l][r],dp[l][k-1] + tmp*tmp + dp[k+1][r]);
}
}
}
cout<<dp[1][m]<<endl;
return 0;
}