using System; using static System.Console; using System.Linq; using System.Collections.Generic; using System.Globalization; using System.Runtime.CompilerServices; using System.Runtime.Intrinsics.X86; class Program { static int NN => int.Parse(ReadLine()); static int[] NList => ReadLine().Split().Select(int.Parse).ToArray(); static int[] NMi => ReadLine().Split().Select(c => int.Parse(c) - 1).ToArray(); static int[][] NMap(int n) => Enumerable.Repeat(0, n).Select(_ => NMi).ToArray(); public static void Main() { Solve(); } static void Solve() { var n = NN; var a = NList; var bitmax = 1 << Math.Min(22, n); var dp = new int[Math.Min(22, n) * 150_000 + 1]; var ans = new int[n]; for (var b = 1; b < bitmax; ++b) { var sum = 0; var tmp = b; for (var i = 0; i < 22 && i < n; ++i) { if (tmp % 2 == 1) sum += a[i]; tmp >>= 1; } if (dp[sum] > 0) { tmp = b; var nega = dp[sum]; for (var i = 0; i < 22 && i < n; ++i) { if (tmp % 2 == 1) ans[i] = a[i]; if (nega % 2 == 1) ans[i] = -a[i]; tmp >>= 1; nega >>= 1; } WriteLine("Yes"); WriteLine(string.Join(" ", ans)); return; } dp[sum] = b; } WriteLine("No"); } }