模仿者
题号:NC282069
时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 256 M,其他语言512 M
64bit IO Format: %lld

题目描述

在一款即时通讯软件里,有一种功能叫做群组。

现在,群组中有n个成员。每个成员都是一个模仿者,会模仿指定对象的头像。允许模仿自己。

模仿的具体含义是:每经过一个时刻,若成员A模仿对象为成员B,那么成员A就会更换为成员B的头像。

现在给定所有成员的模仿对象。初始时,每个成员都有本质不同的原始头像。

你的任务是计算经过10^{100}个时刻之后,群组里还存在几种本质不同的头像。

输入描述:

第一行一个整数n。表示群组里一共有几个成员。编号1 \sim n

接下来一行n个整数a_i,描述每个成员i的模仿对象为a_i

其中,1 \le n \le 10^5, 1 \le a_i \le n.

输出描述:

一行一个整数表示答案。
示例1

输入

复制
3
2 3 1

输出

复制
3
示例2

输入

复制
3
1 2 1

输出

复制
2