#include<bits/stdc++.h>
using namespace std;
int t,n,m,l;
int a[200010];
int to[200010];
int cnt2[200010];
int main(){
scanf("%d",&t);
while(t--){
scanf("%d%d",&n,&m);
int mxlen=0;
int mxans=0;
for(int i=1;i<=n;i++){
scanf("%d",&l);
for(int j=1;j<=l;j++)
scanf("%d",&a[j]);
sort(a+1,a+l+1); a[l+1]=INT_MAX;
int want=0,prev; int second=0;
for(int j=1;j<=l+1;j++){
if(a[j]>want){
if(second){
cnt2[prev]++;
mxans=max(mxans,prev);
to[prev]=max(to[prev],want);
mxlen=max(mxlen,want);
break;
}else{second=1;j--;prev=want,want++;}
}else if(a[j]==want) want++;
}
}
for(int i=mxlen+1;i>=0;i--)
to[i]=max(to[i],cnt2[i]?to[to[i]]:0);
for(int i=0;i<=mxlen+1;i++)
if(cnt2[i]>1) mxans=max(mxans,to[i]);
long long ans=0;
for(int i=0;i<=min(mxlen+1,m);i++)
ans+=max(mxans,max(to[i],i));
if(m>mxlen+1) ans+=(m-mxlen-1)*(mxlen+2ll+m)/2;
for(int i=0;i<=mxlen+1;i++) to[i]=cnt2[i]=0;
printf("%lld\n",ans);
}
}