#include <bits/stdc++.h>
using namespace std;
long long x[5005], a[5005], b[5005], c[5005], d[5005];
long long dp[5005][5005];
bool vis[5005][5005];
int main() {
  int n, s, e;
  scanf("%d%d%d", &n, &s, &e);
  for (int i = 1; i <= n; i++) scanf("%lld", &x[i]);
  for (int i = 1; i <= n; i++) scanf("%lld", &a[i]);
  for (int i = 1; i <= n; i++) scanf("%lld", &b[i]);
  for (int i = 1; i <= n; i++) scanf("%lld", &c[i]);
  for (int i = 1; i <= n; i++) scanf("%lld", &d[i]);
  int in = 0;
  for (int i = 1; i <= n; i++) {
    if (i == 1) {
      if (i == s) {
        vis[i][1] = 1;
        dp[i][1] = -x[i] + d[i];
        in--;
      } else if (i == e) {
        vis[i][0] = 1;
        dp[i][0] = -x[i] + b[i];
        in++;
      } else {
        vis[i][1] = 1;
        dp[i][1] = -x[i] + d[i] - x[i] + b[i];
      }
    } else if (i == n) {
      if (i == s) {
        long long val = x[i] + c[i];
        dp[n][0] = dp[n - 1][0] + val;
      } else if (i == e) {
        long long val = x[i] + a[i];
        dp[n][0] = dp[n - 1][1] + val;
      } else {
        long long val = x[i] + a[i] + x[i] + c[i];
        dp[n][0] = dp[n - 1][1] + val;
      }
    } else {
      if (i == s) {
        for (int j = 0; j <= n; j++) {
          if (!vis[i - 1][j]) continue;
          if (j > 0) {
            long long val = x[i] + c[i];
            if (!vis[i][j] || (vis[i][j] && dp[i][j] > dp[i - 1][j] + val)) {
              vis[i][j] = 1;
              dp[i][j] = dp[i - 1][j] + val;
            }
          }
          long long val = -x[i] + d[i];
          if (!vis[i][j + 1] ||
              (vis[i][j + 1] && dp[i][j + 1] > dp[i - 1][j] + val)) {
            vis[i][j + 1] = 1;
            dp[i][j + 1] = dp[i - 1][j] + val;
          }
        }
        in--;
      } else if (i == e) {
        for (int j = 0; j <= n; j++) {
          if (!vis[i - 1][j]) continue;
          int rem = j + in;
          if (rem > 0) {
            long long val = x[i] + a[i];
            if (!vis[i][j - 1] ||
                (vis[i][j - 1] && dp[i][j - 1] > dp[i - 1][j] + val)) {
              vis[i][j - 1] = 1;
              dp[i][j - 1] = dp[i - 1][j] + val;
            }
          }
          long long val = -x[i] + b[i];
          if (!vis[i][j] || (vis[i][j] && dp[i][j] > dp[i - 1][j] + val)) {
            vis[i][j] = 1;
            dp[i][j] = dp[i - 1][j] + val;
          }
        }
        in++;
      } else {
        for (int j = 0; j <= i; j++) {
          if (!vis[i - 1][j]) continue;
          int rem = j + in;
          if ((j > 1 && rem > 0) || (rem > 1 && j > 0)) {
            long long val = x[i] + a[i] + x[i] + c[i];
            if (!vis[i][j - 1] ||
                (vis[i][j - 1] && dp[i][j - 1] > dp[i - 1][j] + val)) {
              vis[i][j - 1] = 1;
              dp[i][j - 1] = dp[i - 1][j] + val;
            }
          }
          if (j > 0) {
            long long val = x[i] + a[i] + -x[i] + d[i];
            if (!vis[i][j] || (vis[i][j] && dp[i][j] > dp[i - 1][j] + val)) {
              vis[i][j] = 1;
              dp[i][j] = dp[i - 1][j] + val;
            }
          }
          if (rem > 0) {
            long long val = -x[i] + b[i] + x[i] + c[i];
            if (!vis[i][j] || (vis[i][j] && dp[i][j] > dp[i - 1][j] + val)) {
              vis[i][j] = 1;
              dp[i][j] = dp[i - 1][j] + val;
            }
          }
          if (j > 0 || rem > 0) {
            long long val = -x[i] + b[i] + -x[i] + d[i];
            if (!vis[i][j + 1] ||
                (vis[i][j + 1] && dp[i][j + 1] > dp[i - 1][j] + val)) {
              vis[i][j + 1] = 1;
              dp[i][j + 1] = dp[i - 1][j] + val;
            }
          }
        }
      }
    }
  }
  printf("%lld\n", dp[n][0]);
}
