#include #define rep(i, n) for (int i = 0; i < (n); ++i) using namespace std; using ll = long long; using P = pair; struct CHT { deque

d; void add(ll a, ll b) { while (d.size() >= 2) { auto [a1, b1] = d[d.size()-1]; auto [a0, b0] = d[d.size()-2]; if ((b0-b1)*(a-a1) < (b1-b)*(a1-a0)) break; d.pop_back(); } d.emplace_back(a, b); } ll get(ll x) { while (d.size() >= 2) { auto [a0, b0] = d[0]; auto [a1, b1] = d[1]; if (a0*x+b0 < a1*x+b1) break; d.pop_front(); } auto [a, b] = d[0]; return a*x+b; } }; int main() { cin.tie(nullptr) -> sync_with_stdio(false); int n; cin >> n; vector a(n), x(n), y(n); rep(i, n) cin >> a[i]; rep(i, n) cin >> x[i]; rep(i, n) cin >> y[i]; ll ans = 0; CHT cht; rep(i, n) { cht.add(-2*x[i], ans+x[i]*x[i]+y[i]*y[i]); ans = cht.get(a[i]) + a[i]*a[i]; } cout << ans << '\n'; return 0; }