#include <bits/stdc++.h>
using namespace std;
const int N = 1000000;
long long x[N], a[N], b[N], c[N], d[N];
int s, t, n;
long long func(int i, int j) {
  long long ans = max(x[i] - x[j], x[j] - x[i]);
  if (j < i) {
    ans += c[i] + b[j];
  } else {
    ans += d[i] + a[j];
  }
  return ans;
}
int main() {
  scanf("%d%d%d", &n, &s, &t);
  for (int i = 1; i <= n; i++) {
    scanf("%I64d", &x[i]);
  }
  for (int i = 1; i <= n; i++) {
    scanf("%I64d", &a[i]);
  }
  for (int i = 1; i <= n; i++) {
    scanf("%I64d", &b[i]);
  }
  for (int i = 1; i <= n; i++) {
    scanf("%I64d", &c[i]);
  }
  for (int i = 1; i <= n; i++) {
    scanf("%I64d", &d[i]);
  }
  long long ans = 0;
  vector<int> vans;
  vans.push_back(s);
  vans.push_back(t);
  int dit;
  for (int i = 1; i <= n; i++) {
    if (i == s || i == t) continue;
    long long dans = (long long)1e18;
    for (int j = 1; j < vans.size(); j++) {
      if (func(vans[j - 1], i) + func(i, vans[j]) - func(vans[j - 1], vans[j]) <
          dans) {
        dans = func(vans[j - 1], i) + func(i, vans[j]) -
               func(vans[j - 1], vans[j]);
        dit = j;
      }
    }
    vans.insert(vans.begin() + dit, i);
  }
  for (int j = 1; j < vans.size(); j++) {
    ans += func(vans[j - 1], vans[j]);
  }
  printf("%I64d\n", ans);
  return 0;
}
