#include <bits/stdc++.h>
using namespace std;
struct Node {
  int val;
  Node *nxt;
  Node() {
    nxt = NULL;
    val = 0;
  }
  Node(int _val) {
    nxt = NULL;
    val = _val;
  }
};
int x[5120], a[5120], b[5120], c[5120], d[5120];
long long calc(int i, int j) {
  if (j < i)
    return (long long)labs(x[i] - x[j]) + c[i] + b[j];
  else
    return (long long)labs(x[i] - x[j]) + d[i] + a[j];
}
int main() {
  int n, s, e;
  scanf("%d%d%d", &n, &s, &e);
  s--;
  e--;
  for (int i = 0; i < n; i++) scanf("%d", x + i);
  for (int i = 0; i < n; i++) scanf("%d", a + i);
  for (int i = 0; i < n; i++) scanf("%d", b + i);
  for (int i = 0; i < n; i++) scanf("%d", c + i);
  for (int i = 0; i < n; i++) scanf("%d", d + i);
  Node *head = new Node(s);
  Node *tail = new Node(e);
  head->nxt = tail;
  long long ans = calc(s, e);
  for (int i = 0; i < n; i++) {
    if (i == s || i == e) continue;
    long long mn = 1e18;
    Node *mn_p = NULL;
    for (Node *p = head; p && p->nxt; p = p->nxt) {
      long long cost =
          -calc(p->val, p->nxt->val) + calc(p->val, i) + calc(i, p->nxt->val);
      if (cost < mn) {
        mn = cost;
        mn_p = p;
      }
    }
    ans += mn;
    Node *new_node = new Node(i);
    new_node->nxt = mn_p->nxt;
    mn_p->nxt = new_node;
  }
  printf("%I64d\n", ans);
  return 0;
}
