#include <bits/stdc++.h>
using namespace std;
const int N = 5010;
const int MOD = 1e9 + 7;
const long long inf = 1e18;
int n, s, e, x[N], a[N], b[N], c[N], d[N];
long long dp[N][N];
bool used[N][N];
long long solve(int i, int j, int k) {
  if (used[i][j]) return dp[i][j];
  used[i][j] = true;
  if (i > n) {
    if (j == 0 && k == 0)
      dp[i][j] = 0;
    else
      dp[i][j] = inf;
    return dp[i][j];
  }
  if (i > 1 && j == 0 && k == 0) {
    dp[i][j] = inf;
    return dp[i][j];
  }
  dp[i][j] = inf;
  if (i == s) {
    dp[i][j] = min(dp[i][j], solve(i + 1, j + 1, k) - x[i] + d[i]);
    if (k > 0) dp[i][j] = min(dp[i][j], solve(i + 1, j, k - 1) + x[i] + c[i]);
  } else if (i == e) {
    if (j > 0) dp[i][j] = min(dp[i][j], solve(i + 1, j - 1, k) + x[i] + a[i]);
    dp[i][j] = min(dp[i][j], solve(i + 1, j, k + 1) - x[i] + b[i]);
  } else {
    if (j > 0 && k > 0)
      dp[i][j] =
          min(dp[i][j], solve(i + 1, j - 1, k - 1) + 2 * x[i] + a[i] + c[i]);
    if (j > 0) dp[i][j] = min(dp[i][j], solve(i + 1, j, k) + d[i] + a[i]);
    if (k > 0) dp[i][j] = min(dp[i][j], solve(i + 1, j, k) + c[i] + b[i]);
    dp[i][j] =
        min(dp[i][j], solve(i + 1, j + 1, k + 1) - 2 * x[i] + b[i] + d[i]);
  }
  if (dp[i][j] > inf - 1e10) dp[i][j] = inf;
  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(used, false, sizeof(used));
  cout << solve(1, 0, 0);
  return 0;
}
