#include <bits/stdc++.h>
using namespace std;
const int N = 5005;
const long long INF = 0x3f3f3f3f3f3f3f3fLL;
long long dp[N][N];
int x[N], a[N], b[N], c[N], d[N];
int n, s, e;
long long memo(int i, int j, int k) {
  if (j < 0 || k < 0) return INF;
  if (i == n + 1) {
    if (j != 0 || k != 0) return INF;
    return 0LL;
  }
  if (j == 0 && k == 0 && i > 1) return INF;
  if (dp[i][j] != INF) return dp[i][j];
  if (i == s)
    return dp[i][j] = min(memo(i + 1, j - 1, k) + x[i] + c[i],
                          memo(i + 1, j, k + 1) - x[i] + d[i]);
  if (i == e)
    return dp[i][j] = min(memo(i + 1, j, k - 1) + x[i] + a[i],
                          memo(i + 1, j + 1, k) - x[i] + b[i]);
  dp[i][j] = min(memo(i + 1, j - 1, k - 1) + 2 * x[i] + a[i] + c[i],
                 memo(i + 1, j + 1, k + 1) - 2 * x[i] + b[i] + d[i]);
  if (j > 0) dp[i][j] = min(memo(i + 1, j, k) + b[i] + c[i], dp[i][j]);
  if (k > 0) dp[i][j] = min(memo(i + 1, j, k) + a[i] + d[i], dp[i][j]);
  return dp[i][j];
}
int main() {
  scanf("%d%d%d", &n, &s, &e);
  for (int i = 1; i <= n; i++) scanf("%d", x + i);
  for (int i = 1; i <= n; i++) scanf("%d", a + i);
  for (int i = 1; i <= n; i++) scanf("%d", b + i);
  for (int i = 1; i <= n; i++) scanf("%d", c + i);
  for (int i = 1; i <= n; i++) scanf("%d", d + i);
  memset(dp, 0x3f, sizeof dp);
  printf("%lld\n", memo(1, 0, 0));
}
