#include <bits/stdc++.h>
const int N(5010);
struct node {
  long long x, a, b, c, d;
} p[N];
long long Abs(long long x) { return x < 0 ? -x : x; }
long long Dis(node a, node b) {
  if (b.x < a.x)
    return a.x - b.x + a.c + b.b;
  else
    return b.x - a.x + a.d + b.a;
}
long long n, S, T, nxt[N], ans;
int main() {
  scanf("%lld%lld%lld", &n, &S, &T);
  for (int i = 1; i <= n; i++) scanf("%lld", &p[i].x);
  for (int i = 1; i <= n; i++) scanf("%lld", &p[i].a);
  for (int i = 1; i <= n; i++) scanf("%lld", &p[i].b);
  for (int i = 1; i <= n; i++) scanf("%lld", &p[i].c);
  for (int i = 1; i <= n; i++) scanf("%lld", &p[i].d);
  nxt[S] = T, ans = Dis(p[S], p[T]);
  for (int i = 1; i <= n; i++)
    if (i != S && i != T) {
      long long sum = 1e18;
      int t = 0;
      for (int j = S; j != T; j = nxt[j])
        if (Dis(p[j], p[i]) + Dis(p[i], p[nxt[j]]) - Dis(p[j], p[nxt[j]]) < sum)
          sum = Dis(p[j], p[i]) + Dis(p[i], p[nxt[j]]) - Dis(p[j], p[nxt[j]]),
          t = j;
      ans += sum, nxt[i] = nxt[t], nxt[t] = i;
    }
  printf("%lld\n", ans);
  return 0;
}
