Problem I: 最长公共上升子序列

Problem I: 最长公共上升子序列

Time Limit: 1 Sec  Memory Limit: 128 MB
Submit: 91  Solved: 17
[Submit] [Status] [Web Board] [Creator:]

Description

有一个a序列,其中的元素为 a1,a2,... an,如果 ai< aj (1 ≤i < j ≤ n)时,我们称为序列是上升的。


若给定序列X=<x1, x2, …, xm>,则另一序列Z=<z1,z2,…,zk>是X的子序列是指存在一个严格上升的下标序列<i1, i2, …, ik>, 使得对于所有 j=1,2,…,k 有: Xi= Zj, 则这两个序列是存在公共子序列的。


给你两个整数序列。你要找到它们的最长公共上升子序列。

Input

第一行为一个整数 n,表示第一个序列的长度n < 500)。
接下来一行为n个整数。(整数范围在 0 ~ 109)
第三行为一个整数m,表示第二个序列的长度m < 500
接下来一行为m个整数。(整数范围在 0 ~ 109)

Output

输出一个整数,表示两个序列的最长公共上升子序列

Sample Input Copy

样例输入1:
7
2 3 1 6 5 4 6
4
1 3 5 6

样例输入2:
5
1 2 0 2 1
3
1 0 1

Sample Output Copy

样例输出1:
3

样例输出2:
2