#include <bits/stdc++.h>
using namespace std;
const int N = 5005;
int n, s, e, x[N], a[N], b[N], c[N], d[N], o, now;
long long f[2][N];
inline int pd(int x) { return x ? (x == 1 ? 1 : 2) : 0; }
int main() {
  ios::sync_with_stdio(false);
  cin >> n >> s >> e;
  for (int i = 1, _e = n; i <= _e; ++i) cin >> x[i];
  for (int i = 1, _e = n; i <= _e; ++i) cin >> a[i], a[i] += x[i];
  for (int i = 1, _e = n; i <= _e; ++i) cin >> b[i], b[i] -= x[i];
  for (int i = 1, _e = n; i <= _e; ++i) cin >> c[i], c[i] += x[i];
  for (int i = 1, _e = n; i <= _e; ++i) cin >> d[i], d[i] -= x[i];
  for (int i = 0, _e = n; i <= _e; ++i) f[0][i] = 1e18;
  f[0][0] = 0;
  for (int go = 1, _e = n; go <= _e; ++go) {
    o ^= 1;
    for (int i = 0, _e = n; i <= _e; ++i) f[o][i] = 1e18;
    long long v;
    int ad = now ? (now == 1 ? 1 : -1) : 0;
    for (int i = 0, _e = n; i <= _e; ++i)
      if ((v = f[!o][i]) < 1e18) {
        int j = i + ad;
        if (go != s && go != e) {
          if (i + j - 2 > 0 || go == n)
            f[o][i - 1] = min(f[o][i - 1], v + a[go] + c[go]);
          if (i) f[o][i] = min(f[o][i], v + b[go] + c[go]);
          if (j) f[o][i] = min(f[o][i], v + a[go] + d[go]);
          f[o][i + 1] = min(f[o][i + 1], v + b[go] + d[go]);
        } else {
          if (go == s) {
            if (i - 1 + j > 0 || go == n && i)
              f[o][i - 1] = min(f[o][i - 1], v + c[go]);
            f[o][i] = min(f[o][i], v + d[go]);
          } else {
            if (i + j - 1 > 0 || go == n && j)
              f[o][i] = min(f[o][i], v + a[go]);
            f[o][i + 1] = min(f[o][i + 1], v + b[go]);
          }
        }
      }
    if (go == s) now = pd(ad + 1);
    if (go == e) now = pd(ad - 1);
  }
  cout << f[o][0];
}
