#include <bits/stdc++.h>
using namespace std;
const long long M = 5005;
const long long INF = 1e18 + +5;
const long long MOD = 1e9 + 7;
const long long MAX = 25;
const long long N = 2.5e5 + 200;
inline long long add(long long a, long long b, long long p = MOD) {
  long long c = a + b;
  if (c >= p) c -= p;
  return c;
}
inline long long sub(long long a, long long b, long long p = MOD) {
  long long c = a - b;
  if (c < 0) c += p;
  return c;
}
inline long long mult(long long a, long long b, long long p = MOD) {
  return (a * 1ll * b) % p;
}
inline long long power(long long a, long long b) {
  long long ans = 1;
  if (b < 0) b += MOD - 1;
  while (b) {
    if (b & 1) ans = ans * a % MOD;
    b >>= 1;
    a = a * a % MOD;
  }
  return ans;
}
const double PI = 3.14159265358979323846264338327950288419716939937510;
template <class T>
inline void smax(T &x, T y) {
  x = max((x), (y));
}
template <class T>
inline void smin(T &x, T y) {
  x = min((x), (y));
}
long long n, s, e, x[M], a[M], b[M], c[M], d[M], dp[3][M][2][2], ans;
int main() {
  ios::sync_with_stdio(false), cin.tie(0), cout.tie(0);
  cin >> n >> s >> e;
  for (long long i = 1; i <= n; i++) cin >> x[i];
  for (long long i = 1; i <= n; i++) cin >> a[i];
  for (long long i = 1; i <= n; i++) cin >> b[i];
  for (long long i = 1; i <= n; i++) cin >> c[i];
  for (long long i = 1; i <= n; i++) cin >> d[i];
  for (long long(i) = (0); (i) <= (1); ++(i))
    for (long long(j) = (0); (j) <= (M - 2); ++(j))
      for (long long(k) = (0); (k) <= (1); ++(k))
        for (long long(l) = (0); (l) <= (1); ++(l)) dp[i][j][k][l] = INF;
  dp[0][0][0][0] = 0;
  ans = INF;
  for (long long i = 1; i <= n; i++) {
    long long cur1 = i % 2;
    long long prev = cur1 ^ 1LL;
    for (long long(j) = (0); (j) <= (n); ++(j))
      for (long long(k) = (0); (k) <= (1); ++(k))
        for (long long(l) = (0); (l) <= (1); ++(l)) dp[cur1][j][k][l] = INF;
    for (long long(j) = (0); (j) <= (n); ++(j)) {
      for (long long(k) = (0); (k) <= (1); ++(k)) {
        for (long long(l) = (0); (l) <= (1); ++(l)) {
          if (dp[prev][j][k][l] == INF) continue;
          long long val = dp[prev][j][k][l];
          if (i != s && i != e) {
            long long cur = 2 * x[i] + c[i] + a[i];
            if (j + k + l > 1 && j > 0) smin(dp[cur1][j - 1][k][l], val + cur);
            if (i == n && !j && k && l) smin(ans, val + cur);
            cur = a[i] + d[i];
            if (j || k) smin(dp[cur1][j][k][l], val + cur);
            cur = b[i] + c[i];
            if (j || l) smin(dp[cur1][j][k][l], val + cur);
            cur = x[i] * (-2) + b[i] + d[i];
            smin(dp[cur1][j + 1][k][l], val + cur);
          } else if (i == s && !k) {
            long long cur = x[i] + c[i];
            if (j) smin(dp[cur1][j - 1][1][l], val + cur);
            if (i == n && !k && l && !j) smin(ans, val + cur);
            cur = -x[i] + d[i];
            smin(dp[cur1][j][1][l], val + cur);
          } else if (i == e && !l) {
            long long cur = x[i] + a[i];
            if (j) smin(dp[cur1][j - 1][k][1], val + cur);
            if (i == n && k && !l && !j) smin(ans, val + cur);
            cur = -x[i] + b[i];
            smin(dp[cur1][j][k][1], val + cur);
          }
        }
      }
    }
  }
  cout << ans << "\n";
}
