#3255. 一个关于序列的游戏

内存限制:128 MiB 时间限制:5 Sec

题目描述

有一个序列,你可以在上面删除符合要求的连续段若干次。每次删除都会得到连续段长度对应的分数。需要符合的
要求为:
1、相邻两个元素相差为1
2、如果某个元素不在连续段的最左或最右,那么这个元素就不能同时小于相邻的左右两个元素。
“1、2、3、4、3” “1、2” “3、2” “3”都符合条件。
显然,删除掉连续段后,这个段的左边和右边并在一起成为相邻元素。
你的任务是对于给出的序列,计算出可能获得的最大总分。

输入格式

第一行一个整数N,表示序列长度
第二行N个数,V1、V2.....VN,代表每个长度对应的分数。
第三行N个数,A1、A2.....AN,代表初始序列的每个元素。
1<=N<=150, -10000<=Vi<=10000,0<=Ai<=1000 000 000.相同的Ai不会超过7个

输出格式

一个数,可以获得的最大总分

样例

样例输入


			
6
-100 5 6 10 0 0
3 1 2 3 4 10

样例输出


			
11
//【样例说明】
3 1 2 34 10 --->3 4 10 V3=6
3 4 10 ---> 10 V2=5
5+6=11

数据范围与提示