#include <bits/stdc++.h>
using namespace std;
inline long long rd() {
  long long x = 0, p = 1;
  char a = getchar();
  while ((a < 48 || a > 57) && a != '-') a = getchar();
  if (a == '-') p = -p, a = getchar();
  while (a > 47 && a < 58) {
    x = (x << 1) + (x << 3) + (a & 15);
    a = getchar();
  }
  return x * p;
}
inline void write(long long x) {
  if (x < 0) x = -x, putchar('-');
  if (x > 9) write(x / 10);
  putchar(x % 10 + 48);
}
inline void print(long long x, int type = 0) {
  write(x);
  if (!type)
    putchar(' ');
  else
    puts("");
}
const int N = 5002;
long long n, x[N], a[N], b[N], c[N], d[N];
long long s, t, ans;
long long lst[N];
long long dis(int s, int t) {
  if (x[t] < x[s]) return abs(x[s] - x[t]) + c[s] + b[t];
  return abs(x[s] - x[t]) + d[s] + a[t];
}
int main() {
  n = rd();
  s = rd();
  t = rd();
  for (int i = 1; i <= n; i++) x[i] = rd();
  for (int i = 1; i <= n; i++) a[i] = rd();
  for (int i = 1; i <= n; i++) b[i] = rd();
  for (int i = 1; i <= n; i++) c[i] = rd();
  for (int i = 1; i <= n; i++) d[i] = rd();
  lst[s] = t;
  ans = dis(s, t);
  for (int i = 1; i <= n; i++) {
    if (i == s || i == t) continue;
    long long l = 1e18, temp, pos;
    for (int u = s; u != t; u = lst[u]) {
      temp = dis(u, i) + dis(i, lst[u]) - dis(u, lst[u]);
      if (temp < l) l = temp, pos = u;
    }
    ans += l;
    lst[i] = lst[pos];
    lst[pos] = i;
  }
  print(ans, 1);
  return 0;
}
