#include <bits/stdc++.h>
inline int Rand() { return (rand() << 16) | rand(); }
using namespace std;
const int N = 5001, NN = 300001, SMALL = 105, ALPH = 29, BIG = 1000001;
int n, m, s, f;
long long dp[5001][5001];
int x[N], a[N], b[N], c[N], d[N];
long long go(int pos, int i, int j) {
  if (pos == n + 1) {
    if (i == j && i == 0) return 0;
    return 2000000000000000000ll;
  }
  if (i == 0 && j == 0 && pos > 1) return 2000000000000000000ll;
  if (i == -1 || j == -1) return 2000000000000000000ll;
  if (dp[pos][i]) return dp[pos][i];
  dp[pos][i] = 2000000000000000000ll;
  if (pos == s) {
    dp[pos][i] = min(dp[pos][i], go(pos + 1, i + 1, j) + d[pos] - x[pos]);
    if (j)
      dp[pos][i] = min(dp[pos][i], go(pos + 1, i, j - 1) + c[pos] + x[pos]);
  } else {
    if (pos == f) {
      if (i)
        dp[pos][i] = min(dp[pos][i], go(pos + 1, i - 1, j) + a[pos] + x[pos]);
      dp[pos][i] = min(dp[pos][i], go(pos + 1, i, j + 1) + b[pos] - x[pos]);
    } else {
      if (i && j)
        dp[pos][i] = min(dp[pos][i], go(pos + 1, i - 1, j - 1) + a[pos] +
                                         x[pos] + c[pos] + x[pos]);
      if (i)
        dp[pos][i] = min(dp[pos][i], go(pos + 1, i - 1 + 1, j) + a[pos] +
                                         x[pos] + d[pos] - x[pos]);
      if (j)
        dp[pos][i] = min(dp[pos][i],
                         go(pos + 1, i, j) + b[pos] - x[pos] + c[pos] + x[pos]);
      dp[pos][i] = min(dp[pos][i], go(pos + 1, i + 1, j + 1) + b[pos] - x[pos] +
                                       d[pos] - x[pos]);
    }
  }
  return dp[pos][i];
}
int main() {
  scanf("%d %d %d", &n, &s, &f);
  for (int i = int(1); i <= int(n); i++) scanf("%d", &x[i]);
  for (int i = int(1); i <= int(n); i++) scanf("%d", &a[i]);
  for (int i = int(1); i <= int(n); i++) scanf("%d", &b[i]);
  for (int i = int(1); i <= int(n); i++) scanf("%d", &c[i]);
  for (int i = int(1); i <= int(n); i++) scanf("%d", &d[i]);
  cout << go(1, 0, 0);
  return 0;
}
