#include <bits/stdc++.h>   using namespace std;   const long long MOD = (1 ? 100000000000000007 : 233333333333333333);   const int mod = (1 ? 1000000007 : 998244353);   const long long INF = 0x7fffffffffffffff;   const int inf = 0x7fffffff;   const double eps = 1e-8;   const int N = 1e6 + 5;   clock_t start, finish;   void time_in() { start = clock(); }   void time_out() {     finish = clock();     double tim = (double)(finish - start) / CLOCKS_PER_SEC;     printf( Running time is %lf n , tim);   }   inline long long mul(long long a, long long b) {     long long s = 0;     while (b) {       if (b & 1) s = (s + a) % mod;       a = (a << 1) % mod;       b >>= 1;     }     return s % mod;   }   inline long long pow_mul(long long a, long long b) {     long long s = 1;     while (b) {       if (b & 1) s = mul(s, a);       a = mul(a, a);       b >>= 1;     }     return s;   }   inline long long poww(long long a, long long b) {     long long s = 1;     while (b) {       if (b & 1) s = (s * a) % mod;       a = (a * a) % mod;       b >>= 1;     }     return s % mod;   }   inline int read() {     char c = getchar();     int sgn = 1, ret = 0;     while (c !=  -  && (c <  0  || c >  9 )) c = getchar();     if (c ==  - ) sgn = -1, c = getchar();     while (c >=  0  && c <=  9 ) ret = ret * 10 + c - 48, c = getchar();     return ret * sgn;   }   void write(int x) {     if (x > 9) write(x / 10);     putchar(x % 10 +  0 );   }   inline long long phi(long long x) {     long long ans = x;     for (long long i = 2; i * i <= x; i++)       if (x % i == 0) {         ans -= ans / i;         while (x % i == 0) x /= i;       }     if (x > 1) ans -= ans / x;     return ans;   }   int st[5][3] = {-1, 0, 0, 1, 0, 0, 0, -1, 0, 0, 1, 0, 0, 0, 1};   int t, cas;   int m, n;   long long x[N], a[N], b[N], c[N], d[N], v[N];   int main() {     int s, e;     while (~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]);       v[1] = s, v[2] = e;       m = 0;       for (int j = 1; j <= n; j++) {         if (j == s || j == e) continue;         long long ma = INF;         int p = 1;         m++;         for (int i = 1; i <= m; i++) {           long long sum = 0;           if (v[i] < j)             sum += abs(x[v[i]] - x[j]) + d[v[i]] + a[j];           else             sum += abs(x[v[i]] - x[j]) + c[v[i]] + b[j];           if (j < v[i + 1])             sum += abs(x[v[i + 1]] - x[j]) + d[j] + a[v[i + 1]];           else             sum += abs(x[v[i + 1]] - x[j]) + c[j] + b[v[i + 1]];           long long tmp = 0;           if (v[i] < v[i + 1])             tmp += abs(x[v[i]] - x[v[i + 1]]) + d[v[i]] + a[v[i + 1]];           else             tmp += abs(x[v[i]] - x[v[i + 1]]) + c[v[i]] + b[v[i + 1]];           if (sum - tmp < ma) ma = sum - tmp, p = i;         }         for (int i = m + 2; i > p; i--) {           v[i] = v[i - 1];         }         v[p + 1] = j;       }       long long ans = 0;       for (int i = 2; i <= n; i++) {         if (v[i - 1] < v[i])           ans += abs(x[v[i]] - x[v[i - 1]]) + d[v[i - 1]] + a[v[i]];         else           ans += abs(x[v[i]] - x[v[i - 1]]) + c[v[i - 1]] + b[v[i]];       }       printf( %lld n , ans);     }   }