using System; class Program { Scanner cin; int N; int[] X; int[] Y; void myon() { cin = new Scanner(); N = cin.nextInt(); X = new int[N]; Y = new int[N]; for(int i = 0; i < N; i++) { X[i] = cin.nextInt(); } for(int i = 0; i < N; i++) { Y[i] = cin.nextInt(); } int ret = X[0] + Y[0]; for(int i = 1; i < N; i++) { ret = Math.Min(ret, X[i] + Y[i]); } Console.WriteLine(ret); Console.WriteLine(ret); for(int i = 0; i < N; i++) { int more = X[i] + Y[i] - ret; int sub = Math.Min(more, X[i]); X[i] -= sub; more -= sub; Y[i] -= more; Console.WriteLine(Y[i]); } Console.WriteLine(0); } static void Main(string[] args) { new Program().myon(); } } class Scanner { string[] s; int i; readonly char[] cs = new char[] { ' ' }; public Scanner() { s = new string[0]; i = 0; } public string next() { if (i < s.Length) return s[i++]; string st = Console.ReadLine(); while (st == "") st = Console.ReadLine(); s = st.Split(cs, StringSplitOptions.RemoveEmptyEntries); if (s.Length == 0) return next(); i = 0; return s[i++]; } public string nextLine() { return Console.ReadLine(); } public int nextInt() { return int.Parse(next()); } public long nextLong() { return long.Parse(next()); } public double nextDouble() { return double.Parse(next()); } }