#include #include #include #define N 1000005 using namespace std; int i,j,m,n,p,k,vis[N],a[N],b[N],x,ans,Max[2]; inline int read() { int x; char c; while (c=getchar(),c<'0'||c>'9'); x=c-'0'; while (c=getchar(),c>='0'&&c<='9') x=(x<<1)+(x<<3)+c-'0'; return x; } int main() { int T; scanf("%d",&T); for (;T--;) { n=read(); m=read(); for (i=1;i<=n;++i) vis[i]=0; for (i=1;i<=n;++i) a[i]=read(),b[i]=read(); for (;m--;) x=read(),vis[x]++; ans=0; memset(Max,0,sizeof(Max)); for (i=n;i;--i) { Max[0]-=vis[i]; Max[1]-=vis[i]; if (Max[a[i]^1]>b[i]) ++ans; Max[a[i]]=max(Max[a[i]],b[i]); } printf("%d\n",n-ans); } }