#include <bits/stdc++.h>
using namespace std;
const int inf = 1e9;
const long long INF = 1e18;
const double eps = 1e-10;
mt19937 mrand(chrono::high_resolution_clock::now().time_since_epoch().count());
template <class T>
inline void upmin(T &x, T y) {
  x = x > y ? y : x;
}
template <class T>
inline void upmax(T &x, T y) {
  x = x < y ? y : x;
}
const int maxn = 5050;
int n, s, e;
long long f[maxn], g[maxn], a[maxn], b[maxn], c[maxn], d[maxn], x[maxn];
int main() {
  ios::sync_with_stdio(false), cin.tie(0), cout.tie(0);
  cout << fixed << setprecision(10);
  cin >> n >> s >> e;
  for (int i = 1; i <= n; ++i) cin >> x[i];
  for (int i = 1; i <= n; ++i) cin >> a[i];
  for (int i = 1; i <= n; ++i) cin >> b[i];
  for (int i = 1; i <= n; ++i) cin >> c[i];
  for (int i = 1; i <= n; ++i) cin >> d[i];
  for (int i = 1; i <= n; i++) g[i] = INF;
  for (int i = 1; i <= n; i++) {
    for (int j = 0; j <= n; j++) f[j] = INF;
    if (i == s) {
      for (int j = (i > e); j < n; j++) upmin(f[j + 1], g[j] + d[i] - x[i]);
      for (int j = 1; j <= n; j++) upmin(f[j], g[j] + x[i] + c[i]);
    } else if (i == e) {
      for (int j = (i > s); j < n; j++) upmin(f[j + 1], g[j] + b[i] - x[i]);
      for (int j = 1; j <= n; j++) upmin(f[j], g[j] + a[i] + x[i]);
    } else {
      for (int j = (i > e) + 1; j <= n; j++) upmin(f[j], g[j] + a[i] + d[i]);
      for (int j = (i > s) + 1; j <= n; j++) upmin(f[j], g[j] + b[i] + c[i]);
      for (int j = (i > e) + (i > s); j <= n; j++)
        upmin(f[j + 1], g[j] + b[i] + d[i] - 2 * x[i]);
      for (int j = 2; j <= n; j++)
        upmin(f[j - 1], g[j] + 2 * x[i] + a[i] + c[i]);
    }
    swap(f, g);
  }
  cout << g[1] << '\n';
  return 0;
}
