翻译来自于 LibreOJ。
题目译自 Romanian Master of Informatics 2018 Day2 T3 「W」
一个数字数组如果满足以下条件,就被称为 W 形数组:
例如,数组 是 W 形的,分为段 、、、。而数组 不是 W 形的,因为虽然可以分为 、、、,但段 不包含两个不同值。
给定一个包含 个整数的数组,你需要计算有多少个不同的 W 形排列?两个排列 和 若存在某个位置 使得 ,则视为不同。在上述例子中, 只计数一次,因为三个 的内部排列不产生不同的排列。
第一行包含一个整数 。第二行包含 个空格分隔的整数,表示数组的值。
输出一个整数,表示不同的 W 形排列数量,对 取模。
5 3 1 4 2 3
6
7 1 2 2 2 3 4 4
72
在第一个样例中,输入数组为 ,共有 个不同的 W 形排列:
对于所有输入数据,满足:
每个测试点将单独评分。