#include <bits/stdc++.h>
using namespace std;
const int maxn = 5 * 1000 + 10, maxc = 2510;
int n, s, e;
long long dp[maxn][maxc], tl, tr, cost, t, x[maxn], a[maxn], b[maxn], c[maxn],
    d[maxn];
int main() {
  memset(dp, 63, sizeof dp);
  cin >> n >> s >> e;
  for (int i = 0; i < n; i++) cin >> x[i];
  for (int i = 0; i < n; i++) cin >> a[i];
  for (int i = 0; i < n; i++) cin >> b[i];
  for (int i = 0; i < n; i++) cin >> c[i];
  for (int i = 0; i < n; i++) cin >> d[i];
  dp[0][0] = 0;
  for (int i = 1; i <= n; i++) {
    for (int j = 1; j <= min(i, n + 1 - i); j++) {
      if (i >= max(s, e) && i < n && j == 1) continue;
      tl = j;
      if (i >= s) tl--;
      tr = j;
      if (i >= e) tr--;
      cost = tl * (x[i] - x[i - 1] + c[i] - c[i - 1]) +
             tr * (x[i] - x[i - 1] + a[i] - a[i - 1]);
      if (i == s) {
        dp[i][j] = min(dp[i][j], dp[i - 1][j] + cost);
        t = j;
        if (i > e) t--;
        if (i + t <= n)
          dp[i][j] =
              min(dp[i][j], dp[i - 1][j - 1] + cost + a[i - 1] + d[i - 1]);
      } else if (i == e) {
        dp[i][j] = min(dp[i][j], dp[i - 1][j] + cost);
        t = j;
        if (i > s) t--;
        if (i + t <= n)
          dp[i][j] =
              min(dp[i][j], dp[i - 1][j - 1] + cost + c[i - 1] + b[i - 1]);
      } else {
        if (j < min(i - 1, (n + 1) / 2))
          dp[i][j] = min(dp[i][j], dp[i - 1][j + 1] + cost);
        t = j + 1;
        if (i > s) t--;
        if (i > e) t--;
        if (i + t <= n) {
          tr = j;
          if (i > e) tr--;
          if (tr > 0)
            dp[i][j] = min(dp[i][j], dp[i - 1][j] + cost + a[i - 1] + d[i - 1]);
          tl = j;
          if (i > s) tl--;
          if (tl > 0)
            dp[i][j] = min(dp[i][j], dp[i - 1][j] + cost + c[i - 1] + b[i - 1]);
          dp[i][j] = min(dp[i][j], dp[i - 1][j - 1] + cost + a[i - 1] +
                                       c[i - 1] + d[i - 1] + b[i - 1]);
        }
      }
    }
  }
  cout << dp[n][1];
  return 0;
}
