407747: GYM102889 H 宝可梦与分支进化
Description
在宝可梦世界中,进化是一种十分神奇的现象。宝可梦在积累了足够的经验后,不仅外形会发生显著的变化,各项能力也会得到飞跃般的提升,这种现象就被称为宝可梦的进化。而更为神奇的是,有些宝可梦根据外部环境的不同,可以进化成多种不同的形态,这被称为宝可梦的分支进化。
现在大木博士正在研究一个宝可梦家族,这个家族中共有 n 种宝可梦,我们用 1, 2, ..., n 给它们编号。其中,宝可梦 1 是初始的宝可梦,宝可梦 i 则由宝可梦 fi(1 ≤ fi < i, i ≥ 2) 进化而来。
大木博士的院子里有 m 只宝可梦,它们从左向右依次排好了队,左起第 i 只宝可梦的种类为 ai。大木博士希望从中选取一个宝可梦子序列,使得除第一只宝可梦外,每只宝可梦都能由前一只宝可梦进化一次或多次得到。为了便于研究,他希望选取的宝可梦数量最多。
形式化地说,大木博士希望选取一些下标 i1, i2, ..., ik,满足 1 ≤ i1 < i2 < ... < ik ≤ n,且宝可梦 aij + 1 可以由宝可梦 aij 一次或多次进化得到(1 ≤ j < k),并且 k 最大。
请你求出大木博士最多能选取多少只宝可梦。
Input第一行包含两个整数 n, m,n 表示宝可梦的种类数,m 表示大木博士院子里的宝可梦数量。保证 2 ≤ n ≤ 5 × 105, 1 ≤ m ≤ 5 × 105。
接下来一行包含 n - 1 个整数,第 i 个整数为 fi + 1,表示宝可梦 i + 1 由宝可梦 fi + 1 进化而来。保证 1 ≤ fi + 1 < i + 1。
接下来一行包含 m 个整数,第 i 个整数为 ai,表示左起第 i 只宝可梦的种类。保证 1 ≤ ai ≤ n。
Output输出一行包含一个整数,表示大木博士至多可以选取多少只宝可梦。
ExamplesInput4 5 1 1 2 1 2 2 3 4Output
3Input
6 5 1 2 3 4 5 1 2 3 4 6Output
5Note
对于第一个样例,最优的子序列是 1, 2, 4。
对于第二个样例,整个序列都可以选取。