#include <bits/stdc++.h>
using namespace std;
const long long kMaxN = 10000;
long long A[kMaxN], B[kMaxN], C[kMaxN], D[kMaxN], I[kMaxN], X[kMaxN];
long long DP[kMaxN], Ant[kMaxN];
int32_t main() {
  ios_base::sync_with_stdio(false);
  cin.tie(NULL);
  long long n, s, e;
  cin >> n >> s >> e;
  for (long long i = 1; i <= n; ++i) cin >> X[i];
  for (long long i = 1; i <= n; ++i) cin >> A[i];
  for (long long i = 1; i <= n; ++i) cin >> B[i];
  for (long long i = 1; i <= n; ++i) cin >> C[i];
  for (long long i = 1; i <= n; ++i) cin >> D[i];
  for (long long j = 1; j <= n + 1; ++j) Ant[j] = 1e18;
  for (long long i = 1; i <= n; ++i) {
    for (long long j = 0; j <= n + 1; ++j) DP[j] = 1e18;
    long long land_small = X[i] + A[i];
    long long land_large = -X[i] + B[i];
    long long go_small = X[i] + C[i];
    long long go_large = -X[i] + D[i];
    if (i == s) {
      for (long long j = 1; j <= n; ++j) {
        DP[j] = min(DP[j], Ant[j] + go_small);
        DP[j] = min(DP[j], Ant[j - 1] + go_large);
      }
    } else if (i == e) {
      for (long long j = 1; j <= n; ++j) {
        DP[j] = min(DP[j], Ant[j] + land_small);
        DP[j] = min(DP[j], Ant[j - 1] + land_large);
      }
    } else {
      for (long long j = 1; j <= n; ++j) {
        DP[j] = min(DP[j], Ant[j - 1] + land_large + go_large);
        if (i < s || j > 1) DP[j] = min(DP[j], Ant[j] + land_large + go_small);
        if (i < e || j > 1) DP[j] = min(DP[j], Ant[j] + land_small + go_large);
        DP[j] = min(DP[j], Ant[j + 1] + land_small + go_small);
      }
    }
    if (i >= s && i >= e && i != n) DP[1] = 1e18;
    for (long long j = 0; j <= n + 1; ++j)
      if (DP[j] > 1e17) DP[j] = 1e18;
    swap(DP, Ant);
  }
  cout << Ant[1] << endl;
  return 0;
}
