#include <bits/stdc++.h>
using namespace std;
typedef struct {
  long long x;
  long long a, b, c, d;
} Point;
Point s[5005];
long long nxt[5005];
long long AtoB(Point a, Point b) {
  if (b.x < a.x) return abs(a.x - b.x) + a.c + b.b;
  return abs(a.x - b.x) + a.d + b.a;
}
int main() {
  long long n, a, b;
  scanf("%lld%lld%lld", &n, &a, &b);
  for (int i = 1; i <= n; i++) scanf("%lld", &s[i].x);
  for (int i = 1; i <= n; i++) scanf("%lld", &s[i].a);
  for (int i = 1; i <= n; i++) scanf("%lld", &s[i].b);
  for (int i = 1; i <= n; i++) scanf("%lld", &s[i].c);
  for (int i = 1; i <= n; i++) scanf("%lld", &s[i].d);
  long long sum = AtoB(s[a], s[b]);
  long long best, temp;
  nxt[a] = b;
  for (int i = 1; i <= n; i++) {
    if (i == a || i == b) continue;
    long long k = 10000000000000ll;
    for (int j = a; j != b; j = nxt[j]) {
      temp = AtoB(s[j], s[i]) + AtoB(s[i], s[nxt[j]]) - AtoB(s[j], s[nxt[j]]);
      if (temp < k) {
        k = temp;
        best = j;
      }
    }
    sum += k;
    nxt[i] = nxt[best];
    nxt[best] = i;
  }
  printf("%lld\n", sum);
  return 0;
}
