#include <bits/stdc++.h>
using namespace std;
const int N = 5005;
int x[N], a[N], b[N], c[N], d[N];
int n, s, e;
void input() {
  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 moveCost(int i, int j) {
  if (i < j)
    return x[j] - x[i] + (long long)d[i] + (long long)a[j];
  else
    return x[i] - x[j] + (long long)c[i] + (long long)b[j];
}
void hamilton() {
  vector<int> cur;
  cur.push_back(s);
  cur.push_back(e);
  long long ans = moveCost(s, e);
  for (int i = 1; i <= n; i++) {
    if (i == s || i == e) continue;
    long long bestCost = -1;
    int bestPos = -1;
    for (int p = 0; p < cur.size() - 1; p++) {
      long long moreCost = moveCost(cur[p], i) + moveCost(i, cur[p + 1]) -
                           moveCost(cur[p], cur[p + 1]);
      if (bestPos < 0 || moreCost < bestCost) {
        bestCost = moreCost;
        bestPos = p;
      }
    }
    cur.insert(cur.begin() + bestPos + 1, i);
    ans += bestCost;
  }
  cout << ans << endl;
}
int main() {
  input();
  hamilton();
}
