Problem: As you could know there are no male planes nor female planes. However, each plane on Earth likes some other plane. There are n planes on Earth, numbered from 1 to n, and the plane with number i likes the plane with number fi, where 1 ≤ fi ≤ n and fi ≠ i.

We call a love triangle a situation in which plane A likes plane B, plane B likes plane C and plane C likes plane A. Find out if there is any love triangle on Earth.

Input

The first line contains a single integer n (2 ≤ n ≤ 5000) — the number of planes.

The second line contains n integers f1, f2, ..., fn (1 ≤ fi ≤ n, fi ≠ i), meaning that the i-th plane likes the fi-th.

Output

Output «YES» if there is a love triangle consisting of planes on Earth. Otherwise, output «NO».

You can output any letter in lower case or in upper case.

Examples

Input

5
2 4 5 1 3


Output

YES


Input

5
5 5 5 5 1


Output

NO

Note

In first example plane 2 likes plane 4, plane 4 likes plane 1, plane 1 likes plane 2 and that is a love triangle.

In second example there are no love triangles.

Solution (in PYTHON3):

Solution:
#_________________ Mukul Mohan Varshney _______________#

#Template
import sys
import os
import math
import copy
from math import gcd
from bisect import bisect
from io import BytesIO, IOBase
from math import sqrt,floor,factorial,gcd,log,ceil
from collections import deque,Counter,defaultdict
from itertools import permutations, combinations

#define function 
def Int(): return int(sys.stdin.readline())
def Mint(): return map(int,sys.stdin.readline().split())
def Lstr(): return list(sys.stdin.readline().strip())
def Str(): return sys.stdin.readline().strip()
def Mstr(): return map(str,sys.stdin.readline().strip().split())
def List(): return list(map(int,sys.stdin.readline().split()))
def Hash(): return dict()
def Mod(): return 1000000007
def Ncr(n,r,p): return ((fact[n])*((ifact[r]*ifact[n-r])%p))%p
def Most_frequent(list): return max(set(list), key = list.count)
def Mat2x2(n): return [List() for _ in range(n)]

def Divisors(n) : 
     l = []  
     for i in range(1, int(math.sqrt(n) + 1)) :
          if (n % i == 0) : 
               if (n // i == i) : 
                    l.append(i) 
               else : 
                    l.append(i)
                    l.append(n//i)
     return l
 
def GCD(x,y):
     while(y):
          x, y = y, x % y
     return x
     
def minimum_integer_not_in_list(a):
     b=max(a)
     if(b<1):
          return 1
          
     A=set(a)
     B=set(range(1,b+1))
     D=B-A
     if len(D)==0:
          return b+1
     else:
          return min(D)
 
# Driver Code 	
def solution():
          n=int(input())
          a=list(map(int,input().split()))
          for i in range(n):
               if(a[a[a[i]-1]-1]==i+1):
                    print("YES")
                    sys.exit(0)
          print("NO")     
               

#Call the solve function          
if __name__ == "__main__":
     solution()