#include <iostream>
#include <vector>
using namespace std;
const int MAXN = 1000005;
int parent_node[MAXN];
int size_node[MAXN];
int find_set(int v) {
if (v == parent_node[v])
return v;
return parent_node[v] = find_set(parent_node[v]);
}
void union_sets(int a, int b, int &components) {
a = find_set(a);
b = find_set(b);
if (a != b) {
if (size_node[a] < size_node[b]) {
swap(a, b);
}
parent_node[b] = a;
size_node[a] += size_node[b];
components--;
}
}
int main() {
ios_base::sync_with_stdio(false);
cin.tie(NULL);
int n;
if (!(cin >> n)) return 0;
for (int i = 1; i <= n; i++) {
parent_node[i] = i;
size_node[i] = 1;
}
int components = n;
for (int i = 1; i <= n; i++) {
int key_location;
cin >> key_location;
union_sets(i, key_location, components);
}
cout << components << "\n";
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8dmVjdG9yPgoKdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCmNvbnN0IGludCBNQVhOID0gMTAwMDAwNTsKCmludCBwYXJlbnRfbm9kZVtNQVhOXTsKaW50IHNpemVfbm9kZVtNQVhOXTsKCmludCBmaW5kX3NldChpbnQgdikgewogICAgaWYgKHYgPT0gcGFyZW50X25vZGVbdl0pCiAgICAgICAgcmV0dXJuIHY7CiAgICByZXR1cm4gcGFyZW50X25vZGVbdl0gPSBmaW5kX3NldChwYXJlbnRfbm9kZVt2XSk7Cn0KCnZvaWQgdW5pb25fc2V0cyhpbnQgYSwgaW50IGIsIGludCAmY29tcG9uZW50cykgewogICAgYSA9IGZpbmRfc2V0KGEpOwogICAgYiA9IGZpbmRfc2V0KGIpOwogICAgCiAgICBpZiAoYSAhPSBiKSB7CiAgICAgICAgaWYgKHNpemVfbm9kZVthXSA8IHNpemVfbm9kZVtiXSkgewogICAgICAgICAgICBzd2FwKGEsIGIpOwogICAgICAgIH0KICAgICAgICBwYXJlbnRfbm9kZVtiXSA9IGE7CiAgICAgICAgc2l6ZV9ub2RlW2FdICs9IHNpemVfbm9kZVtiXTsKICAgICAgICBjb21wb25lbnRzLS07CiAgICB9Cn0KCmludCBtYWluKCkgewoJaW9zX2Jhc2U6OnN5bmNfd2l0aF9zdGRpbyhmYWxzZSk7CiAgICBjaW4udGllKE5VTEwpOwoKICAgIGludCBuOwogICAgaWYgKCEoY2luID4+IG4pKSByZXR1cm4gMDsKICAgIGZvciAoaW50IGkgPSAxOyBpIDw9IG47IGkrKykgewogICAgICAgIHBhcmVudF9ub2RlW2ldID0gaTsKICAgICAgICBzaXplX25vZGVbaV0gPSAxOwogICAgfQoKICAgIGludCBjb21wb25lbnRzID0gbjsgCgogICAgZm9yIChpbnQgaSA9IDE7IGkgPD0gbjsgaSsrKSB7CiAgICAgICAgaW50IGtleV9sb2NhdGlvbjsKICAgICAgICBjaW4gPj4ga2V5X2xvY2F0aW9uOwogICAgICAgIHVuaW9uX3NldHMoaSwga2V5X2xvY2F0aW9uLCBjb21wb25lbnRzKTsKICAgIH0KICAgIGNvdXQgPDwgY29tcG9uZW50cyA8PCAiXG4iOwoKICAgIHJldHVybiAwOwp9