强尼为智能卡(chipcards)设计芯片。在这种芯片的上边界和下边界上各有 $n$ 个引脚。上边界的引脚从左到右依次用连续的自然数 $1, 2, \dots, n$ 标记;下边界的引脚从左到右也用相同的数字标记,但顺序可能不同。标记有相同数字的一对引脚通过一条直线导线连接;这些导线被分组到不同的层中,且同一层中的导线不能相交。此外,两个边界上的引脚都被分组到插槽(sockets)中:每个插槽由连续的引脚组成,且每个引脚恰好属于一个插槽。注意,下边界上的插槽长度(所含引脚数量)可能与上边界上的插槽长度不同。最后,每个插槽都可以被翻转(switched),在这种情况下,该插槽内引脚的顺序将被反转。
强尼从小道消息得知自己即将被解雇。他决定进行一点报复——他打算设计下一个芯片,使其生产成本尽可能高。关键的生产成本是层数,因此他将以最大化所需层数的方式翻转每个插槽。事实证明,这比他平时的任务要困难得多,强尼正在寻求你的帮助。
输入格式
输入的第一行包含一个正整数 $n$ ($1 \le n \le 5\,000$),表示芯片每个边界上的引脚数量。
第二行包含 $n$ 个来自集合 $\{1, 2, \dots, n\}$ 的互不相同的正整数;这些是下边界上引脚的标记(提醒:上边界上连续引脚的标记依次为 $1, 2, \dots, n$)。
第三行包含一个正整数 $k$ ($1 \le k \le n$),表示上边界的插槽数量,接着是一个空格,然后是 $k$ 个数字,表示上边界各连续插槽的引脚数量。每个插槽至少包含一个引脚,上边界所有插槽的引脚数量之和等于 $n$。
第四行包含对下边界插槽的类似描述。
输出格式
输出一个正整数:所需层数的最大可能值。
样例
输入 1
8 3 5 1 2 8 4 7 6 3 3 1 4 4 2 2 2 2
输出 1
4
说明
在上边界,第一个插槽包含引脚 1, 2 和 3;第二个插槽包含引脚 4;第三个插槽包含引脚 5, 6, 7 和 8。通过翻转插槽,我们可以在上边界上获得以下引脚顺序:
- (1, 2, 3) (4) (5, 6, 7, 8);
- (1, 2, 3) (4) (8, 7, 6, 5);
- (3, 2, 1) (4) (5, 6, 7, 8);
- (3, 2, 1) (4) (8, 7, 6, 5).