七彩珍珠
时间限制:C/C++/Rust/Pascal 2秒,其他语言4秒
空间限制:C/C++/Rust/Pascal 512 M,其他语言1024 M
64bit IO Format: %lld

题目描述

题目背景:
wzh有很多珍珠,每个珍珠都会有一个颜色(可以用数字来表示颜色),这些珍珠按顺序放置在了桌面上。同时wzh可以施展神奇的魔法,每次可以使得一个区间的的两种颜色的珍珠颜色互换,wzh不停地施展着魔法,使得某种颜色的珍珠个数在不断变化。wzh希望能够在不断施展魔法的同时知道某个区间的某种颜色的珍珠个数。
题目描述:
给你珍珠的颜色总数m以及一个长度位n的数组aa_i表示第i个位置的珍珠颜色为a_i
wzh可以对数组进行操作。
操作1:给定一个区间[l,r],x,y表示将在区间[l,r]内颜色为x,y的珍珠颜色互换。
操作2:给定一个区间[l,r],k表示询问在区间[l,r]内颜色为k的珍珠数量。n(n<=100000)
wzh会进行q次询问,对于每个操作2你必须输出对应的答案。

输入描述:

第一行输入两个整数n(n<=100000)m(1<=m<=25)表示数组大小以及颜色的个数;
第二行输入n个整数a_1,a_2,...,a_n(1<=a_i<=m),表示每个珍珠一开始的颜色;
第三行输入一个整数q(1<=q<=100000),表示询问次数;
接下来q行每行先输入一个整数op∈ \{1,2\},表示操作的类型,对于操作1接着输入一行l,r,x,y(1<=l<=r<=n,1<=x,y<=m)四个整数;对于操作2接着输入一行l,r,k(1<=l<=r<=n,1<=k<=m)三个整数

输出描述:

对于每个操作2输出对应的答案
示例1

输入

复制
6 5
1 1 4 5 1 4
3
2
1 6 1
1
1 6 4 1
2
1 6 1

输出

复制
3
2

说明

一开始珍珠颜色为{1,1,4,5,1,4},所以区间[1,6]中1的个数为3;
进行操作1后珍珠颜色变为{4,4,1,5,4,1},所以[1,6]中1的个数为2。