#include <bits/stdc++.h>
using namespace std;
const int maxn = 5000 + 10;
const long long INF = (long long)1000000000 * 1000000000;
int n, x[maxn], a[maxn], b[maxn], c[maxn], d[maxn], s, e;
long long f[maxn][maxn];
long long leftin(int p) { return x[p] + a[p]; }
long long rightin(int p) { return -x[p] + b[p]; }
long long leftgo(int p) { return x[p] + c[p]; }
long long rightgo(int p) { return -x[p] + d[p]; }
long long work(int p, int in, int out) {
  long long res = f[p][in];
  if (res) return res;
  if (p == n + 1) {
    if (!in && !out)
      return 0;
    else
      return INF;
  }
  if (!in && !out && p != 1) return INF;
  res = INF;
  if (p == e) {
    if (out) res = min(res, work(p + 1, in, out - 1) + leftin(p));
    res = min(res, work(p + 1, in + 1, out) + rightin(p));
    return res;
  } else if (p == s) {
    if (in) res = min(res, work(p + 1, in - 1, out) + leftgo(p));
    res = min(res, work(p + 1, in, out + 1) + rightgo(p));
    return res;
  } else {
    if (in && out)
      res = min(res, work(p + 1, in - 1, out - 1) + leftin(p) + leftgo(p));
    if (in) res = min(res, work(p + 1, in, out) + rightin(p) + leftgo(p));
    if (out) res = min(res, work(p + 1, in, out) + leftin(p) + rightgo(p));
    res = min(res, work(p + 1, in + 1, out + 1) + rightin(p) + rightgo(p));
  }
  return f[p][in] = res;
}
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]);
  cout << work(1, 0, 0) << endl;
  return 0;
}
