第一行包含一个正整数 $T$,表示测试数据的组数。
每组数据第一行包含 $9$ 个正整数 $n,k,m,p,SA,SB,SC,A,B$,其中 $n$ 表示钻石种类数,$k,m$ 表示任务条件。
为了在某种程度上减少输入量,a[]和b[]由以下代码生成:
unsigned int SA, SB, SC;
int p, A, B;
unsigned int rng61(){
SA^=SA<<16;
SA^=SA>>5;
SA^=SA<<1;
unsigned int t=SA;
SA=SB;
SB=SC;
SC^=t^SA;
return SC;
}
void gen(){
scanf("%d%d%d%d%u%u%u%d%d",&n,&k,&m,&p,&SA,&SB,&SC,&A,&B);
for (int i=1; i<=p; i++) scanf("%d%d",&a[i],&b[i]);
for (int i=p+1; i<=n; i++){
a[i]=rng61()%A+1;
b[i]=rng61()%B+1;
}
}