1 #include<bits/stdc++.h>
2 #define N 1000005
3 using namespace std;
4 int n,cnt,Max,Min,k,u,v;
5 int a[N],in[N],s[N],flag[N];
6 int calc(int u){
7 flag[u]=1;
8 int sum=1,v=u;
9 while (!flag[a[v]]){
10 flag[a[v]]=1;
11 sum++;
12 v=a[v];
13 }
14 if (sum==1) sum=2;
15 return sum;
16 }
17 int main(){
18 scanf("%d",&n);
19 for (int i=1;i<=n;i++){
20 scanf("%d",&a[i]);
21 in[a[i]]++;
22 }
23 for (int i=1;i<=n;i++)
24 if (!in[i]) s[++cnt]=i,flag[i]=true;
25 int num=1;
26 while (num<=cnt){
27 k=s[num];
28 u=a[k];
29 if (!flag[u]){
30 Min++; flag[u]=true;
31 v=a[u];
32 in[v]--;
33 if (!in[v]){
34 s[++cnt]=v;
35 flag[v]=true;
36 }
37 }
38 num++;
39 }
40 for (int i=1;i<=n;i++)
41 if (!flag[i]) Min+=(calc(i)+1)/2;
42 memset(flag,0,sizeof(flag));
43 for (int i=1;i<=n;i++)
44 in[a[i]]++;
45 cnt=0;
46 for (int i=1;i<=n;i++)
47 if (!in[i]) s[++cnt]=i,flag[i]=true;
48 num=1;
49 while (num<=cnt){
50 k=s[num];
51 u=a[k];
52 if (!flag[u]){
53 Max++; flag[u]=true;
54 s[++cnt]=u;
55 }
56 num++;
57 }
58 for (int i=1;i<=n;i++)
59 if (!flag[i]) Max+=calc(i)-1;
60 printf("%d %d\n",Min,Max);
61 return 0;
62 }