#include <bits/stdc++.h>
using namespace std;
inline int read() {
  int w = 1, s = 0;
  char ch = getchar();
  while (!isdigit(ch)) {
    if (ch == '-') w = -1;
    ch = getchar();
  }
  while (isdigit(ch)) {
    s = s * 10 + ch - '0';
    ch = getchar();
  }
  return w * s;
}
int n, A[5050], B[5050], C[5050], D[5050], X[5050], S, T;
long long f[5050][5050];
inline void Gao() {
  memset(f, 0x3f, sizeof(f));
  f[0][0] = 0;
  int num = 0;
  for (register int i = 1; i <= n; ++i) {
    for (register int j = 0; j <= i; ++j) {
      if (f[i - 1][j] > 1e15) continue;
      int in = j + num, out = j;
      if (i == S) {
        if (in) f[i][j] = min(f[i - 1][j] + X[i] + C[i], f[i][j]);
        f[i][j + 1] = min(f[i][j + 1], f[i - 1][j] + D[i] - X[i]);
      } else if (i == T) {
        if (out) f[i][j - 1] = min(f[i - 1][j] + X[i] + A[i], f[i][j - 1]);
        f[i][j] = min(f[i][j], f[i - 1][j] + B[i] - X[i]);
      } else {
        if (in) f[i][j] = min(f[i - 1][j] + B[i] + C[i], f[i][j]);
        if (out) f[i][j] = min(f[i - 1][j] + A[i] + D[i], f[i][j]);
        if (in && out)
          f[i][j - 1] = min(f[i][j - 1], f[i - 1][j] + 2 * X[i] + A[i] + C[i]);
        f[i][j + 1] = min(f[i][j + 1], f[i - 1][j] + B[i] + D[i] - 2 * X[i]);
      }
    }
    if (i == T) num++;
    if (i == S) num--;
    if (num == 0 && i != n) f[i][0] = 1e16;
  }
  cout << f[n][0];
}
int main() {
  n = read();
  S = read();
  T = read();
  for (register int i = 1; i <= n; ++i) X[i] = read();
  for (register int i = 1; i <= n; ++i) A[i] = read();
  for (register int i = 1; i <= n; ++i) B[i] = read();
  for (register int i = 1; i <= n; ++i) C[i] = read();
  for (register int i = 1; i <= n; ++i) D[i] = read();
  Gao();
  return 0;
}
