#include<iostream>
using namespace std;
#define int long long
const int INF=0x3f3f3f3f3f3f3f3f;
const int N=1e5+10;
int f[N][50];
int num[N][50];
int n,c,ans=0;
void print(int x){
for(int i=0;i<5;i++){
if(x&(1<<i)) cout<<"1";
else cout<<"0";
}
cout<<endl;
}
signed main(){
ios::sync_with_stdio(false);
cin>>n>>c;
while(c--){
int e,f,l,lim1=0,lim2=0,tmp;
cin>>e>>f>>l;
while(f--){
cin>>tmp;
lim1|=(1<<((tmp-e+n)%n));
}
while(l--){
cin>>tmp;
lim2|=(1<<((tmp-e+n)%n));
}
for(int j=0;j<32;j++){
if((~j&lim1)||(j&lim2)){
num[e][j]++;
}
}
}
for(int t=0;t<32;t++){
for(int i=1;i<=n+1;i++){
for(int j=0;j<32;j++){
f[1][j]=-INF;
}
}
f[1][t]=num[1][t];
for(int i=2;i<=n+1;i++){
for(int j=0;j<32;j++){
int sb=j<<1;
sb&=15;
f[i][j]=max(f[i-1][sb^1],f[i-1][sb])+num[i][j];
}
}
ans=max(ans,f[n+1][t]);
}
cout<<ans;
return 0;
}