#include <bits/stdc++.h>
#define Node pair <int, int>
#define mp(x, y) make_pair(x, y)
using namespace std;
inline int read()
{
char ch = getchar();
int res = 0, f = 1;
for (; ch < '0' || ch > '9'; ch = getchar())
{
if (ch == '-')
{
f = -1;
}
}
for (; ch >= '0' && ch <= '9'; ch = getchar())
{
res = (res << 3) + (res << 1) + (ch - '0');
}
return res * f;
}
const int N = (int) 1e6 + 10;
const int inf = (int) 1e9;
int t, n, a[N];
Node q1[N], q2[N];
int l1, r1, l2, r2;
inline Node mx()
{
if (r1 == l1)
{
return q2[l2++];
}
else if (r2 == l2)
{
return q1[--r1];
}
else if (q2[l2] > q1[r1 - 1])
{
return q2[l2++];
}
else
{
return q1[--r1];
}
}
inline Node mn()
{
if (l1 == r1)
{
return q2[--r2];
}
else if (r2 == l2)
{
return q1[l1++];
}
else if (q2[r2 - 1] < q1[l1])
{
return q2[--r2];
}
else
{
return q1[l1++];
}
}
inline Node M_min(Node x, Node y)
{
return x < y ? x : y;
}
inline void solve()
{
l1 = r1 = l2 = r2 = 0;
for (int i = 1; i <= n; ++i)
{
q1[r1] = mp(a[i], i);
}
int fl = 0, cnt = 0, alf = 0;
while (true)
{
cnt++;
Node x = mn(), y = mx();
Node z = M_min((l1 < r1 ? q1[l1] : mp(inf, -inf)), (l2 < r2 ? q2[r2 - 1] : mp(inf, -inf)));
y.first -= x.first;
if (y > z || cnt == n - 1)
{
if (fl)
{
printf("%d\n", n - (fl - (alf & 1)));
return;
}
if (cnt == n - 1)
{
printf("1\n");
return;
}
q2[r2++] = y;
}
else
{
alf++;
if (!fl)
{
fl = cnt;
}
q2[r2++] = y;
}
}
}
int main()
{
t = read() - 1;
n = read();
for (int i = 1; i <= n; ++i)
{
a[i] = read();
}
solve();
while (t--)
{
int k = read();
for (int i = 1, x; i <= k; ++i)
{
x = read(), a[x] = read();
}
solve();
}
return 0;
}
四年级蒟蒻中的蒟蒻中的蒟蒻中的蒟蒻求助!!!