#include <bits/stdc++.h>
using namespace std;
template <typename T>
inline void read(T& s) {
  s = 0;
  int f = 0;
  char c = getchar();
  while (!isdigit(c)) f |= (c == '-'), c = getchar();
  while (isdigit(c)) s = s * 10 + (c ^ 48), c = getchar();
  s = f ? -s : s;
}
const int _ = 5010;
const long long INF = 0x3f3f3f3f3f3f3f3fLL;
int n, s, e, nxt[_];
long long x[_], a[_], b[_], c[_], d[_];
inline long long calc(int i, int j) {
  if (x[j] < x[i])
    return labs(x[i] - x[j]) + c[i] + b[j];
  else
    return labs(x[i] - x[j]) + d[i] + a[j];
}
int main() {
  read(n), read(s), read(e);
  for (register int i = 1; i <= n; ++i) read(x[i]);
  for (register int i = 1; i <= n; ++i) read(a[i]);
  for (register int i = 1; i <= n; ++i) read(b[i]);
  for (register int i = 1; i <= n; ++i) read(c[i]);
  for (register int i = 1; i <= n; ++i) read(d[i]);
  long long ans = calc(s, e);
  nxt[s] = e;
  for (register int i = 1; i <= n; ++i) {
    if (i == s || i == e) continue;
    long long tmp = INF;
    int pos;
    for (register int j = s; j != e; j = nxt[j]) {
      long long now = calc(j, i) + calc(i, nxt[j]) - calc(j, nxt[j]);
      if (now < tmp) tmp = now, pos = j;
    }
    ans += tmp, nxt[i] = nxt[pos], nxt[pos] = i;
  }
  printf("%lld\n", ans);
  return 0;
}
