#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #define rep(i, m, n) for(int i=int(m);i inline void chmin(T1 &a, T2 b) { if (a > b) a = b; } template inline void chmax(T1 &a, T2 b) { if (a < b) a = b; } typedef long long int ll; using ll = long long int; using ull = long long unsigned int; using Int = long long int; using namespace std; #define INF (1 << 30) - 1 #define INFl (ll)5e15 #define DEBUG 0 #define dump(x) cerr << #x << " = " << (x) << endl #define MOD 1000000007 //edit class Solve { public: void solve() { Int N; cin >> N; vector X(N + 1), Y(N + 1); for (int i = 1; i <= N; ++i) { cin >> X[i]; } for (int i = 1; i <= N; ++i) { cin >> Y[i]; } vector T(N + 2); T[N + 1] = INFl; int idx = -1; for (int i = 1; i <= N; ++i) { if (T[N + 1] > X[i] + Y[i]) { T[N + 1] = min(T[N + 1], X[i] + Y[i]); // T[i] = X[i]; idx = i; } } for (int i = 1; i <= N; ++i) { if (i == idx) { T[i] = X[i]; } else { T[i] = max(T[N + 1] - Y[i], 0); } } // for (int i = 1; i <= N; ++i) { // T[i] = T[N + 1] - Y[i]; // cerr << T[N + 1] - Y[i] << " " << T[0] + X[i] << endl; // } // cout << T[N + 1] << endl; for (int i = 0; i <= N + 1; ++i) { cout << T[i] << endl; } } }; int main() { cin.tie(0); ios::sync_with_stdio(false); cout << fixed << setprecision(10); Solve().solve(); return 0; }