#abc238f. [abc238_f]Two Exams

[abc238_f]Two Exams

问题描述

在高桥王国里,NN名编号为11NN的公民参加了一场竞技编程的考试。 这次考试分为两个测试,公民ii在第一个测试中排名第PiP_i,第二个测试中排名第QiQ_i。 两个测试都没有并列名次。也就是说,序列PPQQ都是(1,2,...,N)(1, 2, ..., N)的一个排列。

王国的总统伊罗哈打算在即将到来的世界编程锦标赛上选出KK名公民组成国家队。 国家队的成员必须满足以下条件:

  • 不能选择一对公民(x,y)(x, y),其中公民xx被选中而公民yy未被选中,并且Px>PyP_x > P_yQx>QyQ_x > Q_y
    • 换句话说,如果公民yy在两个测试中的排名都比公民xx低,那么不能选择公民xx而不选择公民yy

首先,伊罗哈想知道满足上述条件的国家队成员的数量。为了帮助她找到答案。 由于这个数字可能很大,所以请将其打印为998244353998244353模。

约束条件

  • 输入中的所有值都是整数。
  • 1N3001 \le N \le 300
  • 1KN1 \le K \le N
  • PPQQ都是(1,2,...,N)(1,2,...,N)的一个排列。

输入

输入格式如下所示:

NN KK P1P_1 P2P_2 \dots PNP_N Q1Q_1 Q2Q_2 \dots QNQ_N

输出

打印一个整数作为答案。


示例输入1

4 2
2 4 3 1
2 1 4 3

示例输出1

3
  • 将公民11和公民22选入国家队是可以的。
  • 如果选择公民11和公民33,那么公民44在两个测试中的排名都比公民33高,违反了问题描述中的条件。
  • 将公民11和公民44选入国家队是可以的。
  • 如果选择公民22和公民33,那么公民33在两个测试中的排名都比公民11低,违反了条件。
  • 将公民22和公民44选入国家队是可以的。
  • 如果选择公民33和公民44,那么公民33在两个测试中的排名都比公民11低,违反了条件。

最终答案是33


示例输入2

33 16
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33
33 32 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1

示例输出2

168558757

3333名公民中选择1616名满足要求的方法数为11668031101166803110。 因此,我们应该打印11668031101166803110998244353998244353的结果,即168558757168558757


示例输入3

15 7
4 9 7 5 6 13 2 11 3 1 12 14 15 10 8
4 14 9 12 7 15 1 2 8 11 3 5 13 6 10

示例输出3

23