Some time ago Leonid have known about idempotent functions. Idempotent function defined on a set {1, 2, ..., *n*} is such function <img align="middle" class="tex-formula" src="https://espresso.codeforces.com/be90664fb67fc59aea0742746b0626ddab543582.png" style="max-width: 100.0%;max-height: 100.0%;"/>, that for any <img align="middle" class="tex-formula" src="https://espresso.codeforces.com/75df05ed78f11fc97381dcb0cd5b104b9483ca8f.png" style="max-width: 100.0%;max-height: 100.0%;"/> the formula *g*(*g*(*x*)) = *g*(*x*) holds.

Let's denote as *f*<sup class="upper-index">(*k*)</sup>(*x*) the function *f* applied *k* times to the value *x*. More formally, *f*<sup class="upper-index">(1)</sup>(*x*) = *f*(*x*), *f*<sup class="upper-index">(*k*)</sup>(*x*) = *f*(*f*<sup class="upper-index">(*k* - 1)</sup>(*x*)) for each *k* &gt; 1.

You are given some function <img align="middle" class="tex-formula" src="https://espresso.codeforces.com/58da889a2e5c65797055ac8eba57b4a01abee69c.png" style="max-width: 100.0%;max-height: 100.0%;"/>. Your task is to find minimum positive integer *k* such that function *f*<sup class="upper-index">(*k*)</sup>(*x*) is idempotent.
In the first line of the input there is a single integer *n* (1 ≤ *n* ≤ 200) — the size of function *f* domain.

In the second line follow *f*(1), *f*(2), ..., *f*(*n*) (1 ≤ *f*(*i*) ≤ *n* for each 1 ≤ *i* ≤ *n*), the values of a function.
N =int(input())
inp =input().split()
F =[0 for i in range(N)]
for i in range(N): F[i] =int(inp[i])-1

ans_small =[0 for i in range(N+1)]
for i in range(N):
	x =i
	y =i
	for j in range(N):
		x =F[x]
		y =F[F[y]]
		if x == y:
			ans_small[j+1] +=1

ans =-1
for i in range(1,N+1):
	if ans == -1:
		if ans_small[i] == N:
			ans =i

#dlhe
pw =[0 for i in range(500)]
for i in range(N):
	vis =[False for j in range(N)]
	vis[i] =True
	x =F[i]
	while vis[x] == False:
		vis[x] =True
		x =F[x]
	vis2 =[False for j in range(N)]
	vis2[x] =True
	x =F[x]
	while vis2[x] == False:
		vis2[x] =True
		x =F[x]
	c =0
	for j in range(N):
		if vis2[j]: c +=1
	j =2
	while j <= c:
		p =0
		while c%j == 0:
			c //=j
			p +=1
		pw[j] =max(pw[j],p)
		j +=1

if ans == -1:
	ans =1
	for i in range(1,500):
		for j in range(pw[i]):
			ans *=i
	ans0 =ans
	while ans <= N:
		ans +=ans0

print(ans)