赤道拜托尼亚(Equatorial Byteotia)正爆发着黑帮火拼。黑帮头目们来到该国首都拜特堡(Byteburg)解决争端。谈判气氛十分紧张,一度有参与者拔枪相向。每位参与者都用手枪瞄准了另一人。如果他们真的开始火拼,射击将遵循以下荣誉准则:
- 参与者按特定顺序射击,且在任何时刻最多只有一人在射击;
- 没有射手会脱靶,目标会立即死亡,因此该目标之后无法再进行射击;
- 每个人都有一次射击机会,前提是他在轮到自己射击前没有被击中;
- 任何参与者不得更改其最初选择的目标,即使目标已经死亡(此时射击不会造成额外伤亡)。
一名殡仪员在远处观察着这一切,正如他往常所做的那样。毕竟,黑帮分子从未让他失去生意。他从这场枪战中看到了潜在的利润,但他想得到精确的估算。具体来说,他想知道伤亡人数的最小值和最大值。殡仪员看到了谁瞄准了谁,但不知道射击的顺序。你需要编写一个程序来确定他急于想知道的这两个数字。
编写一个程序:
- 从标准输入读取每位黑帮成员选择的目标;
- 确定伤亡人数的最小值和最大值;
- 将结果输出到标准输出。
输入格式
标准输入的第一行包含参与者人数 $n$ ($1 \le n \le 1\,000\,000$)。参与者编号从 $1$ 到 $n$。第二行包含 $n$ 个整数 $s_1, s_2, \dots, s_n$,由空格分隔,$1 \le s_i \le n$。$s_i$ 表示第 $i$ 位参与者瞄准的目标编号。注意,对于某些 $i$,可能存在 $s_i=i$ 的情况(毕竟神经紧张嘛)。
输出格式
你的程序应在标准输出的第一行(也是唯一一行)输出两个由空格分隔的整数。这两个数字分别应为枪战造成的最小伤亡人数和最大伤亡人数。
样例
输入 1
8 2 3 2 2 6 7 8 5
输出 1
3 5