#include #include #include int n; long long F = 2000000, mini = 1000000000000000000; std::vector fs, ps, ts; void eval(const std::vector &cs){ std::vector es(4); long long t = 0; int ci = 0; for (int i = 0; i < n-1; ++i){ if (i == cs[ci]) es[++ci] = (ps[i]-t%F+F)%F; long long w = F; for (int ei = 0; ei <= ci; ++ei) w = std::min(w, (ps[i]-(es[ei]+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]; for (int c1 = 1; c1 <= n; ++c1) for (int c2 = std::min(c1+1,n); c2 <= n; ++c2) for (int c3 = std::min(c2+1,n); c3 <= n; ++c3) eval({c1, c2, c3, n}); std::cout << mini << std::endl; return 0; }