编程题
### 问题描述
给定一个长度为 $N$ 的序列,每个位置 $i$ 上有一个能力值要求 $V_i$。
你初始时位于位置 $1$,并且**初始能力值为** $V_1$。你可以通过向后移动一步来到达位置 $i+1$。在移动过程中,你必须保证你的当前能力值**大于等于**即将到达位置的能力值要求 $V_{i+1}$。在每个位置 $i$ ,你可以提供一次花费 $A_i$ 来提升你的能力值 $B_i$。对于每个位置,提升操作只能使用一次。
你的目标是从位置 $1$ 移动到位置 $N$,求使得你能够到达位置 $N$ 的最小花费。如果无法到达位置 $N$,输出 $-1$。
你只能从位置 $i$ 移动到位置 $i+1$,不可以跳跃。
### 输入格式
第一行包含一个整数 $N$,表示序列的长度。$(1\le N\le1000)$
第二行包含 $N$ 个整数 $V_1, V_2, \ldots, V_N$,表示每个位置的能力值要求。$(0\le V_i\le 1000,1\le i\le N)$
第三行包含 $N$ 个整数 $A_1, A_2, \ldots, A_N$,表示每个位置提升能力值的花费。$(1\le A_i\le 10^9,1\le i\le N)$
第四行包含 $N$ 个整数 $B_1, B_2, \ldots, B_N$,表示每个位置可提升的能力值。$(1\le B_i\le 1000,1\le i\le N)$
### 输出格式
输出一个整数,表示从位置 $1$ 到位置 $N$ 的最小花费, 若不可达,输出 $-1$。
### 样例输入
```plaintext
5
3 2 4 5 1
2 4 3 1 5
3 5 4 2 8
```
### 样例输出
```plaintext
2
```
### 说明
以下是从位置 $1$ 到位置 $N$ 的一种最优方案:
- 在位置 $1$ 花费 $2$ 点 提升当前能力值为 $6$。