#include <bits/stdc++.h>
const long long N = 5050;
const long long INF = (1LL << 55);
long long n;
long long source, target;
long long x[N], a[N], b[N], c[N], d[N];
void init() {
  std::cin >> n;
  std::cin >> source >> target;
  for (long long i = 1; i <= n; i++) {
    scanf("%I64d", &x[i]);
  }
  for (long long i = 1; i <= n; i++) {
    scanf("%I64d", &a[i]);
  }
  for (long long i = 1; i <= n; i++) {
    scanf("%I64d", &b[i]);
  }
  for (long long i = 1; i <= n; i++) {
    scanf("%I64d", &c[i]);
  }
  for (long long i = 1; i <= n; i++) {
    scanf("%I64d", &d[i]);
  }
}
void update(long long &x, long long y) { x = std::min(x, y); }
long long cost(long long i, long long v0, long long v1) {
  if (v1 == 0) {
    if (v0 == 0) {
      return x[i] + a[i];
    } else {
      return -x[i] + b[i];
    }
  } else {
    if (v0 == 0) {
      return x[i] + c[i];
    } else {
      return -x[i] + d[i];
    }
  }
}
void work() {
  static long long f[N][N];
  for (long long i = 0; i <= n + 10; i++) {
    for (long long j = 0; j <= n + 10; j++) {
      f[i][j] = INF;
    }
  }
  long long cnt[2] = {0, 0};
  f[0][0] = 0;
  for (long long i = 0; i < n; i++) {
    for (long long j = 0; j <= n; j++) {
      long long tmp[2];
      tmp[0] = cnt[0] - j;
      tmp[1] = cnt[1] - j;
      if (i > 0 && tmp[0] + tmp[1] <= 0) {
        continue;
      }
      if (tmp[0] < 0 || tmp[1] < 0 || f[i][j] == INF) {
        continue;
      }
      if (i + 1 != source && i + 1 != target) {
        for (long long t0 = 0; t0 <= 1; t0++) {
          for (long long t1 = 0; t1 <= 1; t1++) {
            if ((tmp[0] < (t1 == 0)) || (tmp[1] < (t0 == 0))) {
              continue;
            }
            update(f[i + 1][j + (t0 == 0) + (t1 == 0)],
                   f[i][j] + cost(i + 1, t0, 0) + cost(i + 1, t1, 1));
          }
        }
      } else if (i + 1 == source) {
        for (long long t = 0; t <= 1; t++) {
          if (tmp[0] < (t == 0)) {
            continue;
          }
          update(f[i + 1][j + (t == 0)], f[i][j] + cost(i + 1, t, 1));
        }
      } else {
        for (long long t = 0; t <= 1; t++) {
          if (tmp[1] < (t == 0)) {
            continue;
          }
          update(f[i + 1][j + (t == 0)], f[i][j] + cost(i + 1, t, 0));
        }
      }
    }
    if (i + 1 == source) {
      cnt[1]++;
    } else if (i + 1 == target) {
      cnt[0]++;
    } else {
      cnt[0]++;
      cnt[1]++;
    }
  }
  std::cout << f[n][n - 1] << std::endl;
}
int main() {
  init();
  work();
  return 0;
}
