#include <bits/stdc++.h>
using namespace std;
const int N = 5005;
long long F[2][N];
int n, X[N], A[N], B[N], C[N], D[N], s, e;
inline void chkmin(long long& a, const long long& b) { a = min(a, b); }
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);
  for (int i = 1; i <= n; ++i)
    C[i] += X[i], B[i] -= X[i], D[i] -= X[i], A[i] += X[i];
  memset(F, 0x3f, sizeof F);
  F[0][0] = 0;
  for (int i = 1; i <= n; ++i) {
    long long *f = F[i & 1], *g = F[i & 1 ^ 1];
    memset(f, 0x3f, sizeof *F);
    for (int p = 0; p <= i; ++p) {
      if (i == s) {
        if (p < (i > e)) continue;
        if (p) chkmin(f[p], g[p] + C[i]);
        chkmin(f[p + 1], g[p] + D[i]);
      } else if (i == e) {
        if (p < (i > s)) continue;
        if (p) chkmin(f[p], g[p] + A[i]);
        chkmin(f[p + 1], g[p] + B[i]);
      } else {
        if (p < (i > s) + (i > e)) continue;
        chkmin(f[p + 1], g[p] + B[i] + D[i]);
        if (p > 1) chkmin(f[p - 1], g[p] + A[i] + C[i]);
        if (p > (i > e)) chkmin(f[p], g[p] + A[i] + D[i]);
        if (p > (i > s)) chkmin(f[p], g[p] + B[i] + C[i]);
      }
    }
  }
  printf("%lld\n", F[n & 1][1]);
  return 0;
}
