#include <bits/stdc++.h>
using namespace std;
template <class T>
inline void chkmin(T &a, T b) {
  if (a > b) a = b;
}
template <class T>
inline void chkmax(T &a, T b) {
  if (a < b) a = b;
}
inline void myassert(bool a, string s) {
  if (!a) cerr << s << endl, exit(0);
}
inline int read() {
  int s = 0, f = 1;
  char ch = getchar();
  while (!isdigit(ch) && ch != '-') ch = getchar();
  if (ch == '-') ch = getchar(), f = -1;
  while (isdigit(ch)) s = s * 10 + ch - '0', ch = getchar();
  return ~f ? s : -s;
}
const int maxn = 5e3 + 20;
const long long inf = 1ll << 60;
int n, x[maxn], a[maxn], b[maxn], c[maxn], d[maxn], S, T;
inline void init() {
  n = read();
  S = read();
  T = read();
  for (int i = (1), _end_ = (n); i <= _end_; i++) x[i] = read();
  for (int i = (1), _end_ = (n); i <= _end_; i++) a[i] = read() + x[i];
  for (int i = (1), _end_ = (n); i <= _end_; i++) b[i] = read() - x[i];
  for (int i = (1), _end_ = (n); i <= _end_; i++) c[i] = read() + x[i];
  for (int i = (1), _end_ = (n); i <= _end_; i++) d[i] = read() - x[i];
}
long long dp[2][maxn];
inline void doing() {
  int u = 0;
  memset(dp[u], 63, sizeof(dp));
  dp[0][0] = 0;
  int sp1 = 0, sp2 = 0;
  for (int i = (1), _end_ = (n); i <= _end_; i++) {
    u ^= 1;
    memset(dp[u], 63, sizeof(dp[u]));
    for (int j = (0), _end_ = (i); j <= _end_; j++) {
      if (i == S) {
        if (j && (i == n || j > sp2)) chkmin(dp[u][j], dp[u ^ 1][j] + c[i]);
        chkmin(dp[u][j + 1], dp[u ^ 1][j] + d[i]);
        sp1 = 1;
      } else if (i == T) {
        if (j && (i == n || j > sp1)) chkmin(dp[u][j], dp[u ^ 1][j] + a[i]);
        chkmin(dp[u][j + 1], dp[u ^ 1][j] + b[i]);
        sp2 = 1;
      } else {
        chkmin(dp[u][j + 1], dp[u ^ 1][j] + b[i] + d[i]);
        if (j) {
          if (j > sp1) chkmin(dp[u][j], dp[u ^ 1][j] + b[i] + c[i]);
          if (j > sp2) chkmin(dp[u][j], dp[u ^ 1][j] + a[i] + d[i]);
          if (j > 1 && (i == n || j > sp1 + sp2))
            chkmin(dp[u][j - 1], dp[u ^ 1][j] + a[i] + c[i]);
        }
      }
    }
  }
  printf("%lld\n", dp[u][1]);
}
int main() {
  init();
  doing();
  return 0;
}
