#include <bits/stdc++.h>
using namespace std;
using ll = long long;
ll gcd(ll a, ll b){
while(b){
ll t = a % b;
a = b;
b = t;
}
return a;
}
ll lcm(ll a, ll b){
return (a / gcd(a, b)) * b;
}
int main() {
ios::sync_with_stdio(false);
cin.tie(nullptr);
int n;
cin >> n;
vector<int> p(n + 1);
vector<vector<int>> graph(n + 1);
for (int i = 1; i <= n; i++) {
cin >> p[i];
// Make the graph undirected so BFS finds the whole component
graph[i].push_back(p[i]);
graph[p[i]].push_back(i);
}
vector<int> vis(n + 1, 0);
ll ans = 1;
for (int i = 1; i <= n; i++) {
if (vis[i]) continue;
queue<int> q;
q.push(i);
vis[i] = 1;
int sz = 0;
while (!q.empty()) {
int u = q.front();
q.pop();
sz++;
for (int v : graph[u]) {
if (!vis[v]) {
vis[v] = 1;
q.push(v);
}
}
}
ans = lcm(ans, (ll)sz);
}
cout << ans << "\n";
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CnVzaW5nIGxsID0gbG9uZyBsb25nOwoKbGwgZ2NkKGxsIGEsIGxsIGIpewogICAgd2hpbGUoYil7CiAgICAgICAgbGwgdCA9IGEgJSBiOwogICAgICAgIGEgPSBiOwogICAgICAgIGIgPSB0OwogICAgfQogICAgcmV0dXJuIGE7Cn0KCmxsIGxjbShsbCBhLCBsbCBiKXsKICAgIHJldHVybiAoYSAvIGdjZChhLCBiKSkgKiBiOwp9CgppbnQgbWFpbigpIHsKICAgIGlvczo6c3luY193aXRoX3N0ZGlvKGZhbHNlKTsKICAgIGNpbi50aWUobnVsbHB0cik7CgogICAgaW50IG47CiAgICBjaW4gPj4gbjsKCiAgICB2ZWN0b3I8aW50PiBwKG4gKyAxKTsKICAgIHZlY3Rvcjx2ZWN0b3I8aW50Pj4gZ3JhcGgobiArIDEpOwoKICAgIGZvciAoaW50IGkgPSAxOyBpIDw9IG47IGkrKykgewogICAgICAgIGNpbiA+PiBwW2ldOwoKICAgICAgICAvLyBNYWtlIHRoZSBncmFwaCB1bmRpcmVjdGVkIHNvIEJGUyBmaW5kcyB0aGUgd2hvbGUgY29tcG9uZW50CiAgICAgICAgZ3JhcGhbaV0ucHVzaF9iYWNrKHBbaV0pOwogICAgICAgIGdyYXBoW3BbaV1dLnB1c2hfYmFjayhpKTsKICAgIH0KCiAgICB2ZWN0b3I8aW50PiB2aXMobiArIDEsIDApOwogICAgbGwgYW5zID0gMTsKCiAgICBmb3IgKGludCBpID0gMTsgaSA8PSBuOyBpKyspIHsKICAgICAgICBpZiAodmlzW2ldKSBjb250aW51ZTsKCiAgICAgICAgcXVldWU8aW50PiBxOwogICAgICAgIHEucHVzaChpKTsKICAgICAgICB2aXNbaV0gPSAxOwoKICAgICAgICBpbnQgc3ogPSAwOwoKICAgICAgICB3aGlsZSAoIXEuZW1wdHkoKSkgewogICAgICAgICAgICBpbnQgdSA9IHEuZnJvbnQoKTsKICAgICAgICAgICAgcS5wb3AoKTsKICAgICAgICAgICAgc3orKzsKCiAgICAgICAgICAgIGZvciAoaW50IHYgOiBncmFwaFt1XSkgewogICAgICAgICAgICAgICAgaWYgKCF2aXNbdl0pIHsKICAgICAgICAgICAgICAgICAgICB2aXNbdl0gPSAxOwogICAgICAgICAgICAgICAgICAgIHEucHVzaCh2KTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgYW5zID0gbGNtKGFucywgKGxsKXN6KTsKICAgIH0KCiAgICBjb3V0IDw8IGFucyA8PCAiXG4iOwp9