#include <bits/stdc++.h>
using namespace std;
int n, st, ed, a[5050], b[5050], c[5050], d[5050], X[5050];
long long f[5050][5050];
int main() {
  scanf("%d%d%d", &n, &st, &ed);
  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]);
  memset(f, 0x3f, sizeof(f));
  const long long inf = f[0][0];
  f[0][0] = 0;
  for (int i = 1; i <= n; i++) {
    if (i == st) {
      for (int j = 0; j < i; j++)
        if (f[i - 1][j] < inf) {
          if (j >= 1 + (i > ed && i != n))
            f[i][j] = min(f[i][j], f[i - 1][j] + X[i] + c[i]);
          f[i][j + 1] = min(f[i][j + 1], f[i - 1][j] - X[i] + d[i]);
        }
    } else if (i == ed) {
      for (int j = 0; j < i; j++)
        if (f[i - 1][j] < inf) {
          if (j >= 1 + (i > st && i != n))
            f[i][j] = min(f[i][j], f[i - 1][j] + X[i] + a[i]);
          f[i][j + 1] = min(f[i][j + 1], f[i - 1][j] - X[i] + b[i]);
        }
    } else {
      for (int j = 0; j < i; j++)
        if (f[i - 1][j] < inf) {
          if (j >= 2 + (i > st && i > ed && i != n))
            f[i][j - 1] =
                min(f[i][j - 1], f[i - 1][j] + a[i] + c[i] + X[i] * 2);
          if (j >= 1 + (i > ed))
            f[i][j] = min(f[i][j], f[i - 1][j] + a[i] + d[i]);
          if (j >= 1 + (i > st))
            f[i][j] = min(f[i][j], f[i - 1][j] + b[i] + c[i]);
          f[i][j + 1] = min(f[i][j + 1], f[i - 1][j] + b[i] + d[i] - X[i] * 2);
        }
    }
  }
  printf("%lld\n", f[n][1]);
  return 0;
}
