n = int(input()) p = [int(x) % n for x in input().split()] q = [-1] * n visited = [False] * n todo = [None] * (n + 1) for i in range(n): if visited[i]: continue vs = [] while not visited[i]: visited[i] = True vs.append(i) i = p[i] m = len(vs) if m % 2: w = (m + 1) // 2 for i in range(m): q[vs[i]] = vs[(i+w)%m] elif not todo[m]: todo[m] = vs else: us = todo[m] todo[m] = None for i in range(m): q[us[i]] = vs[i] q[vs[i]] = us[(i+1)%m] if any(todo): print('No') else: print('Yes') print(*((x - 1) % n + 1 for x in q))