#P1007. 爬爬棋

爬爬棋

【问题描述】

爬爬棋的棋盘是一行 NN 个格子,每个格子上一个分数(非负整数)。

棋盘第 11 格是唯一的起点,第 NN 格是终点,游戏要求玩家控制一个爬爬棋子从起点出发走到终点。

爬爬棋中 MM 张爬行卡片,分成 44 种不同的类型,每种类型的卡片上分别标有 11, 22, 33, 44 四个数字之一,表示使用这种卡片后,爬爬棋子将向前爬行相应的格子数。玩家每次需要从所有的爬行卡片中选择一张之前没有使用过的爬行卡片,控制棋子前进相应的格子数,每张卡片只能使用一次。

游戏中,爬爬棋子棋子自动获得起点格子的分数,并且在后续的爬行中每到达一个格子,就得到该格子相应的分数。玩家最终游戏得分就是乌龟棋子从起点到终点过程中到过的所有格子的分数总和。

如果已知每个格子的分数和所有的爬行卡片,你能计算出最多能得到多少分吗?

【输入格式】

每行中两个数之间用一个空格隔开。

1122 个正整数 NN, MM,分别表示棋盘格子数和爬行卡片数。

22NN 个非负整数,a1,a2,,aNa_1, a_2, \dots, a_N,其中 aia_i 表示棋盘第 ii 个格子上的分数。

33MM 个整数,b1,b2,,bMb_1, b_2, \dots, b_M,表示 MM 张爬行卡片上的数字。

输入数据保证到达终点时刚好用光 MM 张爬行卡片。

【输出格式】

一个整数,表示最多能得到的分数。

【输入输出样例 1】

样例输入

9 5
6 10 14 2 8 8 18 5 17
1 3 1 2 1

样例输出

73

【说明/提示】

数据说明

对于 30%30\% 的数据有 1N30,1M121 \le N \le 30, 1 \le M \le 12

对于 50%50\% 的数据有 1N120,1M501 \le N \le 120, 1 \le M \le 50,且 44 种爬行卡片,每种卡片的张数不会超过 2020

对于 100%100\% 的数据有 1N350,1M1201 \le N \le 350, 1 \le M \le 120,且 44 种爬行卡片,每种卡片的张数不会超过 4040;$0 \le a_i \le 100, 1 \le i \le N, 1 \le b_i \le 4, 1 \le i \le M$。