#include <bits/stdc++.h>
using namespace std;
int n, x[5555], a[5555], b[5555], c[5555], d[5555], st, en;
long long dp[2][5551][2][2];
const long long inf = 1e18;
map<int, int> hs;
int main() {
  scanf("%d%d%d", &n, &st, &en);
  int tst = 0;
  {
    st--;
    en--;
    int i, j, s, p, q, flag;
    hs.clear();
    for (i = 0; i < n; i++) {
      scanf("%d", &x[i]);
    }
    for (i = 0; i < n; i++) {
      scanf("%d", &a[i]);
    }
    for (i = 0; i < n; i++) {
      scanf("%d", &b[i]);
    }
    for (i = 0; i < n; i++) {
      scanf("%d", &c[i]);
    }
    for (i = 0; i < n; i++) {
      scanf("%d", &d[i]);
    }
    for (i = 0; i < 2; i++)
      for (j = 0; j <= n; j++)
        for (s = 0; s < 2; s++)
          for (p = 0; p < 2; p++) dp[i][j][s][p] = inf;
    dp[0][0][0][0] = 0;
    flag = 0;
    int fs = 0;
    for (i = 0; i < n; i++) {
      for (j = 0; j <= n; j++)
        for (s = 0; s < 2; s++)
          for (p = 0; p < 2; p++) dp[1 - flag][j][s][p] = inf;
      for (j = 0; j <= n; j++)
        for (s = 0; s < 2; s++)
          for (p = 0; p < 2; p++) {
            if (dp[flag][j][s][p] == inf) continue;
            if (fs && s == 0 && p == 0) continue;
            if (i != st && i != en) {
              dp[1 - flag][j + 1][s][p] =
                  min(dp[1 - flag][j + 1][s][p],
                      dp[flag][j][s][p] + d[i] - x[i] + b[i] - x[i]);
              if (j + s + p >= 2)
                dp[1 - flag][j - 1][s][p] =
                    min(dp[1 - flag][j - 1][s][p],
                        dp[flag][j][s][p] + (long long)c[i] + (long long)x[i] +
                            (long long)a[i] + (long long)x[i]);
              if (j) {
                dp[1 - flag][j][s][p] =
                    min(dp[1 - flag][j][s][p], dp[flag][j][s][p] + a[i] + d[i]);
                dp[1 - flag][j][s][p] =
                    min(dp[1 - flag][j][s][p], dp[flag][j][s][p] + c[i] + b[i]);
              }
              if (s)
                dp[1 - flag][j][s][p] =
                    min(dp[1 - flag][j][s][p], dp[flag][j][s][p] + a[i] + d[i]);
              if (p)
                dp[1 - flag][j][s][p] =
                    min(dp[1 - flag][j][s][p], dp[flag][j][s][p] + c[i] + b[i]);
              if (s > 0 && p > 0)
                dp[1 - flag][j][s - 1][p - 1] =
                    min(dp[1 - flag][j][s - 1][p - 1],
                        dp[flag][j][s][p] + (long long)c[i] + (long long)x[i] +
                            (long long)a[i] + (long long)x[i]);
            } else if (i == st) {
              dp[1 - flag][j][s + 1][p] = min(dp[1 - flag][j][s + 1][p],
                                              dp[flag][j][s][p] + d[i] - x[i]);
              if (j)
                dp[1 - flag][j - 1][s + 1][p] =
                    min(dp[1 - flag][j - 1][s + 1][p],
                        dp[flag][j][s][p] + c[i] + x[i]);
              if (p)
                dp[1 - flag][j][s][p - 1] = min(
                    dp[1 - flag][j][s][p - 1], dp[flag][j][s][p] + c[i] + x[i]);
            } else if (i == en) {
              dp[1 - flag][j][s][p + 1] = min(dp[1 - flag][j][s][p + 1],
                                              dp[flag][j][s][p] + b[i] - x[i]);
              if (j)
                dp[1 - flag][j - 1][s][p + 1] =
                    min(dp[1 - flag][j - 1][s][p + 1],
                        dp[flag][j][s][p] + a[i] + x[i]);
              if (s)
                dp[1 - flag][j][s - 1][p] = min(
                    dp[1 - flag][j][s - 1][p], dp[flag][j][s][p] + a[i] + x[i]);
            }
          }
      if (i == st) fs |= 1;
      if (i == en) fs |= 2;
      flag = 1 - flag;
    }
    printf("%I64d\n", dp[flag][0][0][0]);
  }
  return 0;
}
