#include<cstdio>
#include<algorithm>
#include<queue>
#include<iostream>
using namespace std;
int n,a[1000005],t,k;
deque<int>q1,q2;
int dfs(int x,int dp,int pd)
{
long long int mx=-1,mn=23334567890,q=0;
if(q1.size()+q2.size()<=1)
if(pd==1)
return 1;
else
return n-1;
if(!q1.empty())
{
mx=q1.front();
q=1;
}
if(!q2.empty())
{
if(mx<=q2.front())
{
mx=q2.front();
q=2;
}
}
if(q==1)
{
q1.pop_front();
}
if(q==2)
q2.pop_front();
q=0;
if(!q1.empty())
{
mn=q1.back();
q=1;
}
if(!q2.empty())
{
if(mn>q2.back())
{
mn=q2.back();
q=2;
}
}
if(q==1)
q1.pop_back();
if(q==2)
{
int w=q2.back();
q2.pop_back();
if(w==x)
{
if(pd==0)
{
q2.push_back(mx-mn);
return dp+(dfs(mx-mn,dp+1,1)==0)-1;
}
else
{
q2.push_back(mx-mn);
return dfs(mx-mn,dp+1,pd)==0;
}
}
}
q2.push_back(mx-mn);
if(pd==1)
return 1;
else
return dfs(mx-mn,dp+1,pd);
}
int main()
{
freopen("1.in","r",stdin);
freopen("1.out","w",stdout);
scanf("%d%d",&t,&n);
for(int i=1;i<=n;i++)
{
scanf("%d",a+i);
q1.push_front(a[i]);
}
printf("%d\n",n-dfs(-1,0,0));
for(int j=1;j<t;j++)
{
scanf("%d",&k);
q1.clear();
q2.clear();
for(int i=1;i<=k;i++)
{
int x,y;
scanf("%d%d",&x,&y);
a[x]=y;
}
for(int i=1;i<=n;i++)
q1.push_front(a[i]);
printf("%d\n",n-dfs(-1,0,0));
}
return 0;
}