#include <stdio.h>
#include <string.h>
struct reader{
int t;
int k;
int bi[5],bt[5];
int nowk;
int freet;
int add;
};
struct reader T[100];
char book[1000];
char yu[1000][100]; //谁在预订
int yu_end[1000];
int ans;
int Get(int id)
{
int i;
for(i=0;i<yu_end[id];i++)
{
if(yu[id][i]!=-1)
{
if(T[yu[id][i]].nowk==-1) return yu[id][i];
}
}
}
int Kill( int id, int x)
{
int i;
for(i=0;i<yu_end[id];i++)
if(yu[id][i]==x)
{
yu[id][i]=-1;
break;
}
}
int main()
{
int i,j,s,tm,n;
scanf("%d %d",&tm,&n);
for(i=0;i<n;i++)
{
scanf("%d%d",&T[i].t,&T[i].k);
for(j=0;j<T[i].k;j++)
scanf("%d%d",&T[i].bi[j],&T[i].bt[j]);
T[i].nowk=-1;
}
for(i=0;i<tm;i++)
{
for(j=0;j<n;j++)
{
if(i<T[j].t) break;
if(i>=T[j].freet)
{
if(T[j].nowk!=-1)
{
book[T[j].bi[T[j].nowk]]=0;
T[j].bi[T[j].nowk]=-1;
T[j].nowk=-1;
}
}
}
for(j=0;j<n;j++)
{
if(i<T[j].t) break;
if(i>=T[j].freet)
{
if(T[j].nowk==-1)
{
for(s=0;s<T[j].k;s++)
{
if(T[j].bi[s]!=-1)
{
if(!book[T[j].bi[s]]&&((yu_end[T[j].bi[s]]==0)||(Get(T[j].bi[s])==j) ))
{
book[T[j].bi[s]]=1;
T[j].nowk=s;
ans++;
T[j].freet=i+T[j].bt[s];
Kill(T[j].bi[s],j);
break;
}
}
}
}
}
}
for(j=0;j<n;j++)
{
if(i<T[j].t) break;
if(i>=T[j].freet)
{
if((T[j].nowk==-1)&&!T[j].add)
{
for(s=0;s<T[j].k;s++)
if(T[j].bi[s]!=-1)
{
yu[T[j].bi[s]][yu_end[T[j].bi[s]]]=j;
yu_end[T[j].bi[s]]++;
}
T[j].add=1;
}
}
}
}
printf("%d",ans);
}