import sys input = lambda : sys.stdin.readline().rstrip() sys.setrecursionlimit(2*10**5+10) write = lambda x: sys.stdout.write(x+"\n") debug = lambda x: sys.stderr.write(x+"\n") writef = lambda x: print("{:.12f}".format(x)) n = int(input()) a = list(map(int, input().split())) s = set([0]) done = 0 for v in a: if v in s: val = v done = 1 break ns = set() for vv in s: if v+vv in s: val = v+vv done = 1 break ns.add(v+vv) s |= ns if done: break if not done: print("No") else: print("Yes") d = {0: None} res = [] def get(v): assert v in d index = [] while d[v] is not None: ind = d[v] index.append(ind) v -= a[ind] return index for i,v in enumerate(a): nd = {} for vv in d: if v+vv==val: index = get(vv) index.append(i) res.append(index) nd[v+vv] = i d.update(nd) if len(res)>=2: break ans = [0]*n for i in res[0]: ans[i] += a[i] for i in res[1]: ans[i] -= a[i] write(" ".join(map(str, ans)))