#include<bits/stdc++.h>
using namespace std;
int c,T,n,txo,tyo,mx,as,mi,lo,tbs,ys,cnt,lst,qi[200005],nd[200005],ez;
long long mxa,mxb,la,lb,za,zb,ra,rb;
struct aa{
long long a;
long long b;
int c;
int d;
int x;
int y;
} dt[200005];
struct bb{
int v;
int w;
int id;
} zx[200005],zy[200005];
bool cmp(bb l,bb r){
if (l.v==r.v) return l.w<r.w;
return l.v<r.v;
}
struct tr{
long long a;
long long b;
} tx[2000006],ty[2000006];
void ad(int ll,int dd,int l,int r,int wh){
tx[dd].a+=dt[wh].a;
tx[dd].b+=dt[wh].b;
if (l==r) return;
int mid=(l+r)/2;
if (ll<=mid) ad(ll,dd*2,l,mid,wh);
else ad(ll,dd*2+1,mid+1,r,wh);
}
void ayd(int ll,int dd,int l,int r,int wh){
ty[dd].a+=dt[wh].a;
ty[dd].b+=dt[wh].b;
if (l==r) return;
int mid=(l+r)>>1;
if (ll<=mid) ayd(ll,dd*2,l,mid,wh);
else ayd(ll,dd*2+1,mid+1,r,wh);
}
void ch(int ll,int rr,int dd,int l,int r){
if (l==ll&&r==rr){
ra+=tx[dd].a;
rb+=tx[dd].b;
return;
}
int mid=(l+r)/2;
if (ll<=mid) ch(ll,min(mid,rr),dd*2,l,mid);
if (rr>mid) ch(max(mid+1,ll),rr,dd*2+1,mid+1,r);
}
void chy(int ll,int rr,int dd,int l,int r){
if (l==ll&&r==rr){
la+=ty[dd].a;
lb+=ty[dd].b;
return;
}
int mid=(l+r)/2;
if (ll<=mid) chy(ll,min(mid,rr),dd*2,l,mid);
if (rr>mid) chy(max(mid+1,ll),rr,dd*2+1,mid+1,r);
}
bool chk(int d){
int l=1,r=txo;
la=0,lb=0,za=mxa,zb=mxb,ra=0,rb=0;
while(l<r){
int mid=(l+r)/2;
if (zx[mid].v<=d) l=mid+1;
else r=mid;
}
if (zx[l].v>d) ch(l,txo,1,1,txo);
l=1,r=tyo;
while(l<r){
int mid=(l+r+1)/2;
if (zy[mid].v>=d) r=mid-1;
else l=mid;
}
if (zy[l].v<d) chy(1,l,1,1,tyo);
zb=zb-rb-lb;
if (!zb) return 0;
if ((la<=ra&&ra<=la)||(la<=ra&&rb<=lb)||(ra<=la&&lb<=rb)||(la<=rb&&rb<=lb)) return 1;
if (lb<ra) return lb+zb>=ra;
return rb+zb>la;
}
int main(){
freopen("lucky.in","r",stdin);
freopen("lucky.out","w",stdout);
cin>>c>>T;
for (int ii=1;ii<=T;ii++){
cin>>n;
txo=tyo=mx=as=mxa=mxb=tbs=ys=lst=as=0;
cnt=1;
mi=1000000009;
for (int i=1;i<=n;i++){
scanf("%lld%lld%lld%lld",&dt[i].a,&dt[i].b,&dt[i].c,&dt[i].d);
qi[i]=dt[i].c;
nd[i]=dt[i].d+1;
mxa+=dt[i].a;
mxb+=dt[i].b;
zx[i].v=dt[i].c;
zx[i].w=i;
mx=max(mx,dt[i].d);
mi=min(mi,dt[i].c);
}
sort(zx+1,zx+1+n,cmp);
for (int i=1;i<=n;i++){
if (zx[i].v!=zx[i-1].v) txo++;
dt[zx[i].w].x=txo;
zx[txo]=zx[i];
}
sort(qi+1,qi+1+n);
sort(nd+1,nd+1+n);
for (int i=1;i<=n;i++) ad(dt[i].x,1,1,txo,i);
for (int i=1;i<=n;i++){
zy[i].v=dt[i].d;
zy[i].w=i;
}
sort(zy+1,zy+1+n,cmp);
for (int i=1;i<=n;i++){
if (zy[i].v!=zy[i-1].v) tyo++;
dt[zy[i].w].y=tyo;
zy[tyo]=zy[i];
}
for (int i=1;i<=n;i++) ayd(dt[i].y,1,1,tyo,i);
ez=1;
for (int i=1;i<=n;i++){
int dq=qi[i],cd=1;
while(cd&&i<=n){
if (qi[i+1]<nd[ez]){
cd++;
if (qi[i+1]!=dq&&chk(dq)) as+=qi[i+1]-dq;
dq=qi[i+1];
i++;
}
else{
cd--;
if (nd[ez]!=dq&&chk(dq)) as+=nd[ez]-dq;
dq=nd[ez];
ez++;
}
}
}
printf("%d\n",as);
for (int i=1;i<=n*4;i++) tx[i].a=tx[i].b=ty[i].a=ty[i].b=0;
}
return 0;
}