def main0(n,a): while True: flg=False for i in range(n): if a[i]==i+1: a[i]=0 flg=True break else: a[i]+=1 if not flg: if a==[1]*n:return True return False def main1(n,a): ary=[0]*n cnt=0 for i in range(n-1,-1,-1): x=a[i] if (x+cnt)%(i+1)!=0 or x>i+1: return False cnt+=(x+cnt)//(i+1) return True if __name__=='__main__': n=int(input()) a=list(map(int,input().split())) #ret0=main0(n,a[:]) #print("Yes" if ret0 else "No") ret1=main1(n,a) print("Yes" if ret1 else "No") from random import randint if __name__=='__main__1': for _ in range(500): n=randint(2,20) a=[randint(0,n) for _ in range(n)] if all(x==0 for x in a):continue ret0=main0(n,a[:]) ret1=main1(n,a) if ret0!=ret1: print(n) print(*a) print(ret0,ret1) break