#include <bits/stdc++.h>
namespace io {
const int SIZE = (1 << 21) + 1;
char ibuf[SIZE], *iS, *iT, obuf[SIZE], *oS = obuf, *oT = oS + SIZE - 1, c,
                                       qu[55];
int f, qr;
inline void flush() {
  fwrite(obuf, 1, oS - obuf, stdout);
  oS = obuf;
}
inline void putc(char x) {
  *oS++ = x;
  if (oS == oT) flush();
}
template <class I>
inline void gi(I &x) {
  for (f = 1, c = (iS == iT ? (iT = (iS = ibuf) + fread(ibuf, 1, SIZE, stdin),
                              (iS == iT ? EOF : *iS++))
                            : *iS++);
       c < '0' || c > '9';
       c = (iS == iT ? (iT = (iS = ibuf) + fread(ibuf, 1, SIZE, stdin),
                       (iS == iT ? EOF : *iS++))
                     : *iS++))
    if (c == '-') f = -1;
  for (x = 0; c <= '9' && c >= '0';
       c = (iS == iT ? (iT = (iS = ibuf) + fread(ibuf, 1, SIZE, stdin),
                       (iS == iT ? EOF : *iS++))
                     : *iS++))
    x = (x << 1) + (x << 3) + (c & 15);
  x *= f;
}
template <class I>
inline void print(I x) {
  if (!x) putc('0');
  if (x < 0) putc('-'), x = -x;
  while (x) qu[++qr] = x % 10 + '0', x /= 10;
  while (qr) putc(qu[qr--]);
}
struct Flusher_ {
  ~Flusher_() { flush(); }
} io_flusher_;
}  // namespace io
using io ::gi;
using io ::print;
using io ::putc;
const int N = 5005;
const long long inf = 1e18;
long long dp[N][N];
int x0[N], a[N], b[N], c[N], d[N];
inline long long min(register long long x, register long long y) {
  return x < y ? x : y;
}
inline void chmin(long long &x, register long long y) { x = min(x, y); }
int main() {
  register int n, s, e, i, j;
  register long long res;
  gi(n);
  gi(s);
  gi(e);
  for (i = 1; i <= n; ++i) gi(x0[i]);
  for (i = 1; i <= n; ++i) gi(a[i]), a[i] += x0[i];
  for (i = 1; i <= n; ++i) gi(b[i]), b[i] -= x0[i];
  for (i = 1; i <= n; ++i) gi(c[i]), c[i] += x0[i];
  for (i = 1; i <= n; ++i) gi(d[i]), d[i] -= x0[i];
  for (i = 0; i <= n; ++i)
    for (j = 0; j <= n; ++j) dp[i][j] = inf;
  dp[0][0] = 0;
  for (i = 0; i < n; ++i)
    for (j = (i >= s) + (i >= e); j <= i; ++j)
      if ((res = dp[i][j]) != inf) {
        if (i + 1 == s)
          chmin(dp[i + 1][j + 1], res + d[i + 1]),
              chmin(dp[i + 1][j], res + c[i + 1]);
        else if (i + 1 == e)
          chmin(dp[i + 1][j], res + a[i + 1]),
              chmin(dp[i + 1][j + 1], res + b[i + 1]);
        else {
          if (j >= 2) chmin(dp[i + 1][j - 1], res + c[i + 1] + a[i + 1]);
          chmin(dp[i + 1][j + 1], res + d[i + 1] + b[i + 1]);
          if (j > (i >= e)) chmin(dp[i + 1][j], res + d[i + 1] + a[i + 1]);
          if (j > (i >= s)) chmin(dp[i + 1][j], res + c[i + 1] + b[i + 1]);
        }
      }
  print(dp[n][1]);
  putc('\n');
  return 0;
}
