from collections import defaultdict def search(N, A): N = min(20, N) dp = [0] * (1 << N) for S in range(1, 1 << N): for i in range(N): if (S >> i) & 1: dp[S] += A[i] memo = defaultdict(list) for S in range(1, 1 << N): if not memo[dp[S]]: memo[dp[S]].append(S) continue for T in memo[dp[S]]: if S & T == 0: return S, T memo[dp[S]].append(S) return -1, -1 N = int(input()) A = list(map(int, input().split())) S, T = search(N, A) if S == -1: print("No") exit() ans = [0] * N for i in range(20): if (S >> i) & 1: ans[i] = A[i] if (T >> i) & 1: ans[i] = -A[i] print("Yes") print(*ans)