Byteasar 最近在 Byteotia 开了一家珠宝店。今天他收到了一份不同寻常的订单。一位顾客给了他两串不同种类的宝石,并要求他将它们制作成一对满足以下条件的项链:
- 两条项链的长度必须相等。
- 第 $i$ 条项链($1 \le i \le 2$)必须由第 $i$ 串宝石的一个连续片段组成。
- 组成两条项链的所有宝石的总价值必须为偶数。
- 应制作出尽可能长的项链。
Byteasar 很了解 Byteotia 人独特的珠宝品味。虽然他拥有所需的精湛工艺,但确定应该制作哪一对项链却是另一回事。请编写一个程序,帮助 Byteasar 确定给定宝石串所能制作的最长项链的长度。
输入格式
标准输入的第一行包含一个正整数 $q$ ($1 \le q \le 20\,000$),表示测试数据的组数。接下来是各组数据的描述。
每组数据由三行组成。第一行包含两个整数 $n$ 和 $m$ ($1 \le n, m \le 100\,000$),由一个空格分隔,分别表示第一串和第二串宝石的数量。第二行指定了第一串宝石,由 $n$ 个 $0$ 到 $10^9$ 之间的整数组成,表示第一串中连续宝石的价值。下一行以类似的方式指定了第二串宝石,由 $m$ 个 $0$ 到 $10^9$ 之间的整数组成。
在每组测试数据中,所有测试用例的 $n$ 和 $m$ 总和不超过 $20\,000\,000$。
输出格式
对于每组测试数据,按照输入顺序,程序应向标准输出打印一行,包含一个整数:满足顾客要求的项链对的最大公共长度。
样例
样例输入 1
1 6 4 0 1 2 3 4 5 3 1 3 6
样例输出 1
3
说明
样例说明:项链的最大可能公共长度为 3。这样的项链可以通过从第一串中选取价值为 2, 3, 4 的宝石,并从第二串中选取价值为 3, 1, 3 的宝石来获得。
子任务
测试集由以下子任务组成。每个子任务内可能包含多个测试点。
| 子任务 | 属性 | 分值 |
|---|---|---|
| 1 | $n, m \le 1000$,每个测试包含最多 10 组数据,每组数据 $n, m > 100$ | 15 |
| 2 | $n \le 1000$,每个测试包含最多 30 组数据,每组数据 $n > 100$ | 10 |
| 3 | 随机生成的宝石价值 | 10 |
| 4 | $n = m$ | 15 |
| 5 | 无其他限制 | 50 |