#include <bits/stdc++.h>
using namespace std;
long long x[5005], a[5005], b[5005], c[5005], d[5005];
vector<int> path;
long long cost2(long long i, long long j) {
  if (i < j) return abs(x[i] - x[j]) + d[i] + a[j];
  return abs(x[i] - x[j]) + c[i] + b[j];
}
int main() {
  long long n;
  scanf("%lld", &n);
  long long s, e;
  scanf("%lld%lld", &s, &e);
  s--;
  e--;
  long long i;
  for (i = 0; i < n; i++) scanf("%lld", &x[i]);
  for (i = 0; i < n; i++) scanf("%lld", &a[i]);
  for (i = 0; i < n; i++) scanf("%lld", &b[i]);
  for (i = 0; i < n; i++) scanf("%lld", &c[i]);
  for (i = 0; i < n; i++) scanf("%lld", &d[i]);
  path.push_back(s);
  path.push_back(e);
  long long min1, index = 0;
  long long cost1, j;
  for (i = 0; i < n; i++) {
    min1 = LONG_MAX;
    if (i != s && i != e) {
      for (j = 0; j < path.size() - 1; j++) {
        cost1 = cost2(path[j], i) + cost2(i, path[j + 1]) -
                cost2(path[j], path[j + 1]);
        if (cost1 < min1) {
          min1 = cost1;
          index = j;
        }
      }
      path.insert(path.begin() + index + 1, i);
    }
  }
  long long ans = 0;
  for (i = 1; i < n; i++) {
    ans += cost2(path[i - 1], path[i]);
  }
  printf("%lld\n", ans);
}
