#include <bits/stdc++.h>
long long min(long long a, long long b) { return a < b ? a : b; }
int main() {
  static long long dp[5000 + 1], dq[5000 + 1];
  static int xx[5000], aa[5000], bb[5000], cc[5000], dd[5000];
  int n, s, e, i, j;
  scanf("%d%d%d", &n, &s, &e);
  s--, e--;
  for (i = 0; i < n; i++) scanf("%d", &xx[i]);
  for (i = 0; i < n; i++) scanf("%d", &aa[i]);
  for (i = 0; i < n; i++) scanf("%d", &bb[i]);
  for (i = 0; i < n; i++) scanf("%d", &cc[i]);
  for (i = 0; i < n; i++) scanf("%d", &dd[i]);
  if (s == 0)
    dp[1] = -xx[0] + dd[0];
  else if (e == 0)
    dp[1] = -xx[0] + bb[0];
  else
    dp[1] = (-xx[0] + bb[0]) + (-xx[0] + dd[0]);
  for (j = 2; j <= n; j++) dp[j] = LLONG_MAX;
  for (i = 1; i < n; i++) {
    for (j = 1; j <= n; j++) dq[j] = LLONG_MAX;
    for (j = 1; j <= n; j++)
      if (dp[j] < LLONG_MAX) {
        int xa = xx[i] + aa[i];
        int xb = -xx[i] + bb[i];
        int xc = xx[i] + cc[i];
        int xd = -xx[i] + dd[i];
        if (i == s) {
          dq[j] = min(dq[j], dp[j] + xc);
          dq[j + 1] = min(dq[j + 1], dp[j] + xd);
        } else if (i == e) {
          dq[j] = min(dq[j], dp[j] + xa);
          dq[j + 1] = min(dq[j + 1], dp[j] + xb);
        } else if (j > 1) {
          if (i < n - 1) {
            dq[j] = min(dq[j], dp[j] + xa + xd);
            dq[j] = min(dq[j], dp[j] + xb + xc);
            dq[j + 1] = min(dq[j + 1], dp[j] + xb + xd);
          }
          dq[j - 1] = min(dq[j - 1], dp[j] + xa + xc);
        } else {
          if (i > s && i > e) continue;
          if (i < e) dq[j] = min(dq[j], dp[j] + xa + xd);
          if (i < s) dq[j] = min(dq[j], dp[j] + xb + xc);
          dq[j + 1] = min(dq[j + 1], dp[j] + xb + xd);
        }
      }
    memcpy(dp, dq, (n + 1) * sizeof *dp);
  }
  printf("%lld\n", dp[1]);
  return 0;
}
