#include <bits/stdc++.h>
using namespace std;
const int N = 5000 + 5;
int x[N], a[N], b[N], c[N], d[N];
long long cal(int i, int j) {
  if (i < j)
    return -(long long)x[i] + x[j] + d[i] + a[j];
  else
    return (long long)x[i] - x[j] + c[i] + b[j];
}
int main() {
  int n, s, e;
  scanf("%d%d%d", &n, &s, &e);
  for (int i = 1; i <= n; ++i) scanf("%d", x + i);
  for (int i = 1; i <= n; ++i) scanf("%d", a + i);
  for (int i = 1; i <= n; ++i) scanf("%d", b + i);
  for (int i = 1; i <= n; ++i) scanf("%d", c + i);
  for (int i = 1; i <= n; ++i) scanf("%d", d + i);
  long long ans = 0;
  if (min(s, e) == 1)
    ans += cal(s, e);
  else
    ans += cal(s, 1) + cal(1, e);
  priority_queue<long long, vector<long long>, greater<long long> > heap;
  long long A, B, C, D;
  for (int i = 2; i <= n; ++i) {
    A = x[i] + a[i], B = -x[i] + b[i], C = x[i] + c[i], D = -x[i] + d[i];
    if (i == s)
      heap.push(D - C);
    else if (i == e)
      heap.push(B - A);
    else {
      ans += A + C;
      if (i < s) heap.push(B - A);
      if (i < e) heap.push(D - C);
      ans += heap.top();
      heap.pop();
      if (i > s) heap.push(B - A);
      if (i > e) heap.push(D - C);
    }
  }
  cout << ans << endl;
}
