编程题
### 问题描述
这里有 $n$ 个元素,和 $q$ 次操作。元素从 $1$ 到 $n$ 进行编号。
首先会告诉你一个数组 $a$ , $a_i$ 代表编号为 $i$ 的元素和 $a_i$ 属于一个集合。如果 $a_i$ 为 $0$ ,则说明它和自己属于同一个集合。接下来会有 $q$ 次操作,每次操作会给出区间 $[l,r]$ (每次操作的区间可能会和之前的重叠),将从编号 $l$ 到 $r$ 所在的集合合并为一个集合。
在进行完 $q$ 次操作后,输出有多少个集合。
### 输入格式
第一行输入人数 $n$ 和操作数量 $q$ 。
第二行输入长度为 $n$ 的数组 $a$ 。
接下来 $q$ 行,每行输入一个区间 $[l, r]$ 。
### 输出格式
输出你计算出集合的数量。
### 输入样例
```
5 2
0 0 0 2 3
1 2
2 3
```
### 输出样例
```
1
```
### 说明
数据范围保证: $2 \le n \le 10^6$ , $1 \le q \le 10^6$ , $1 \le x_i < n$ , $1 \le l < r \le n$ 。