#include int main() { int n = 0; int arr[200000]; bool swapped[200000]; while (scanf("%d", &n) > 0) { for (int i = 0; i < n; i++) { scanf("%d", &arr[i]); swapped[i] = false; } int goodPosCount = 0; for (int i = 0; i < n; i++) { if (arr[i] == i + 1) goodPosCount++; } int pairPosCount = 0; for (int i = 0; i < n; i++) { if (arr[i] != i + 1 && arr[arr[i] - 1] == i + 1 && swapped[i] == false) { pairPosCount++; swapped[i] = true; swapped[arr[i] - 1] = true; } } int toAdd = (goodPosCount + 2 * pairPosCount != n ? -1 : 0); printf("%d\n", n - goodPosCount - pairPosCount + toAdd); } return 0; }