#include <bits/stdc++.h>
using namespace std;
const int MAXN = 5010;
const long long oo = 1E18;
int n, s, e;
int x[MAXN];
int a[MAXN], b[MAXN], c[MAXN], d[MAXN];
long long dp_[2][MAXN][2][2];
auto dp = dp_[0];
auto ndp = dp_[1];
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 = 0; i <= n; ++i)
    dp[i][0][0] = dp[i][0][1] = oo, dp[i][1][0] = dp[i][1][1] = oo;
  dp[0][0][0] = 0;
  for (int i = 1; i <= n; ++i) {
    for (int j = 0; j <= n; ++j)
      ndp[j][0][0] = ndp[j][0][1] = oo, ndp[j][1][0] = ndp[j][1][1] = oo;
    for (int A = 0; A <= n; ++A)
      for (int B = 0; B < 2; ++B)
        for (int C = 0; C < 2; ++C) {
          long long base = dp[A][B][C];
          if (base == oo) continue;
          if (i == s) {
            long long ri = d[i] - x[i];
            long long le = c[i] + x[i];
            (ndp[A][B][C + 1]) = min((ndp[A][B][C + 1]), (base + ri));
            if (A > 0)
              (ndp[A - 1][B][C + 1]) = min((ndp[A - 1][B][C + 1]), (base + le));
            if (B > 0)
              (ndp[A][B - 1][C]) = min((ndp[A][B - 1][C]), (base + le));
          } else if (i == e) {
            long long ri = b[i] - x[i];
            long long le = a[i] + x[i];
            (ndp[A][B + 1][C]) = min((ndp[A][B + 1][C]), (base + ri));
            if (A > 0)
              (ndp[A - 1][B + 1][C]) = min((ndp[A - 1][B + 1][C]), (base + le));
            if (C > 0)
              (ndp[A][B][C - 1]) = min((ndp[A][B][C - 1]), (base + le));
          } else {
            long long lele = 0LL + a[i] + c[i] + x[i] + x[i];
            long long rile = 0LL + b[i] + c[i] - x[i] + x[i];
            long long leri = 0LL + a[i] + d[i] + x[i] - x[i];
            long long riri = 0LL + b[i] + d[i] - x[i] - x[i];
            (ndp[A + 1][B][C]) = min((ndp[A + 1][B][C]), (base + riri));
            if (A > 0) (ndp[A][B][C]) = min((ndp[A][B][C]), (base + leri));
            if (C > 0) (ndp[A][B][C]) = min((ndp[A][B][C]), (base + leri));
            if (B > 0) (ndp[A][B][C]) = min((ndp[A][B][C]), (base + rile));
            if (A > 0) (ndp[A][B][C]) = min((ndp[A][B][C]), (base + rile));
            if (C > 0 && B > 0)
              (ndp[A][B - 1][C - 1]) =
                  min((ndp[A][B - 1][C - 1]), (base + lele));
            if (C > 0 && A > 0)
              (ndp[A - 1][B][C]) = min((ndp[A - 1][B][C]), (base + lele));
            if (A > 1)
              (ndp[A - 1][B][C]) = min((ndp[A - 1][B][C]), (base + lele));
            if (A > 0 && B > 0)
              (ndp[A - 1][B][C]) = min((ndp[A - 1][B][C]), (base + lele));
          }
        }
    swap(dp, ndp);
  }
  printf("%I64d\n", dp[0][0][0]);
  return 0;
}
