你的老板可能是地球上最富有的人。他热爱游戏和娱乐,刚刚投资了一座新岛屿,唯一的目的就是供自己和富有的朋友们享乐。他目前的计划是举办一场盛大的寻宝活动,而将宝藏散布在岛上的任务落到了你的头上。
在岛上四处走动并埋下宝藏几个月后,你的老板又有了新消息。显然,这座岛屿是一个旧雷区。由于他(显然)不能拿自己和朋友们的生命冒险,他让你开始排雷。“你很幸运,”他告诉你,“我们知道这些地雷的位置。”
尽管这是个好消息,但你很快意识到,这大概是你无法完成的任务。毕竟,当第二颗地雷被拆除时,你很可能已经四肢不全了。在没有四肢的情况下拆除剩下的地雷可不容易。因此,你坐下来苦思冥想,试图找到一个能解决你问题的方案。第二天,你带着以下建议去找你的老板。
与其拆除岛上所有的地雷,你建议建造一道栅栏,将地雷与岛屿的其余部分隔开。这样,寻宝活动就可以在栅栏安全的一侧进行。
你的老板很不确定。首先,由于美观原因,他要求栅栏必须是完全笔直的。他也不确定在这种设置下是否会有足够的宝藏来证明他的寻宝活动是合理的。所以现在你需要计算出,用这样一道笔直的栅栏,你最多能隔离出多少宝藏。作为一名熟练的程序员(这是你的爱好),你坐下来编写了一个程序,计算出用这样一道笔直的栅栏,你最多能将多少宝藏与地雷隔离开来。
输入格式
输入的第一行包含一个整数 $T$,表示测试用例的数量。每个测试用例的第一行包含两个整数 $N$ 和 $M$,分别表示宝藏的数量和地雷的数量。接下来两行包含 $N$ 个整数,描述 $N$ 个宝藏的位置。第一行中的第 $i$ 个整数描述第 $i$ 个宝藏的 $x$ 坐标,第二行中的第 $i$ 个整数描述其 $y$ 坐标。接着是另外两行,每行包含 $M$ 个整数,以同样的方式描述地雷的 $x$ 和 $y$ 坐标。
输出格式
对于每个测试用例,输出一行,包含一个整数,表示使用上述策略所能隔离出的宝藏的最大数量。
数据范围
- $0 < T \le 100$
- $1 < N \le 4000$
- $1 < M \le 4000$
- $0 \le x_i, y_i \le 1000000$
- 栅栏可以建模为一条无限薄的无限长直线(即假设岛屿是凸的)。
- 地雷或宝藏不会正好位于栅栏/直线上。
- 不会有宝藏和/或地雷位于完全相同的点上。
样例
输入 1
2 2 3 1 3 1 1 1 2 3 2 1 2 3 3 1 3 5 1 1 1 1 2 3 2 1 2
输出 1
1 2