#include #include #include #include int n; long long F = 2000000, mini = 1000000000000000000; std::vector fs, ps, ts; void eval(const std::vector &es){ long long t = 0; for (int i = 0; i < n-1; ++i){ long long w = F; for (long long e : es) w = std::min(w, (ps[i]-(e+t)%F+F)%F); t += w+llabs(fs[i+1]-fs[i])+ts[i]; } mini = std::min(mini, t); } int main(){ std::cin >> n; ++n; fs = std::vector(n); for (int i = 1; i < n; ++i) std::cin >> fs[i]; ts = std::vector(n-1); for (int i = 0; i < n-1; ++i) std::cin >> ts[i]; ps = std::vector(n-1); for (int i = 0; i < n-1; ++i) ps[i] = fs[i] < fs[i+1] ? fs[i] : F-fs[i]; std::vector qs(n-1); for (int i = 0; i < n-1; ++i) qs[i] = (ps[i]+llabs(fs[i+1]-fs[i])+ts[i])%F; std::vector es(4); eval(es); for (int i1 = 0; i1 < n-2; ++i1){ es[1] = (es[0]+ps[i1+1]-qs[i1]+F)%F; for (int b2 = 0; b2 < 2; ++b2) for (int i2 = 0; i2 < n-2; ++i2){ es[2] = (es[b2]+ps[i2+1]-qs[i2]+F)%F; for (int b3 = 0; b3 < 3; ++b3) if (b3 != 1) for (int i3 = 0; i3 < n-2; ++i3){ es[3] = (es[b3]+ps[i3+1]-qs[i3]+F)%F; eval(es); } } } std::cout << mini << std::endl; return 0; }