#abc247h. [abc247_h]Rearranging Problem

[abc247_h]Rearranging Problem

题目描述

NN 个人,他们按从前向后的顺序排列,分别称为 Person 11,Person 22dots\\dots,Person NN。 Person ii 穿着颜色 cic_i

高桥重复以下操作 KK 次:随机选择两个人 iijj 并交换 Person ii 和 Person jj 的位置。

KK 次操作结束后,从前向后数第 ii 个人穿着的颜色与 cic_i 相同,对于满足 1leqileqN1 \\leq i \\leq N 的所有整数 ii

KK 次操作后,有多少种可能的人的排列方式?将计数结果对 998244353998244353 取模。

约束条件

  • 2leqNleq2000002 \\leq N \\leq 200000
  • 1leqKleq1091 \\leq K \\leq 10^9
  • 1ciN1 \leq c_i \leq N
  • 输入中的所有值均为整数。

输入

从标准输入获得输入数据,格式如下:

NN KK c1c_1 c2c_2 dots\\dots cNc_N

输出

打印答案。


示例输入 1

4 1
1 1 2 1

示例输出 1

3

下面是高桥的全部可能操作和每个操作后的人的排列方式:

  • 交换 Person 11 和 Person 22 的位置,得到排列 (2,1,3,4)(2, 1, 3, 4)
  • 交换 Person 11 和 Person 44 的位置,得到排列 (4,2,3,1)(4, 2, 3, 1)
  • 交换 Person 22 和 Person 44 的位置,得到排列 (1,4,3,2)(1, 4, 3, 2)

示例输入 2

3 3
1 1 2

示例输出 2

1

下面是高桥的一种可能操作序列:

  • 在第 11 次操作中,交换 Person 11 和 Person 33 的位置,得到排列 (3,2,1)(3, 2, 1)
    在第 22 次操作中,交换 Person 22 和 Person 33 的位置,得到排列 (2,3,1)(2, 3, 1)
    在第 33 次操作中,交换 Person 11 和 Person 33 的位置,得到排列 (2,1,3)(2, 1, 3)

请注意,在操作序列中,从前向后数第 ii 个人的颜色不一定与 cic_i 相同。


示例输入 3

10 4
2 7 1 8 2 8 1 8 2 8

示例输出 3

132