시간 제한메모리 제한제출정답맞힌 사람정답 비율
1 초 1024 MB24015012864.646%

문제

정수 $R$, $C$가 주어진다. 이어 $R\times C$개의 서로 다른 소수 $A_i$가 주어진다. 소수는 $2$ 이상이고, $1$과 자기 자신으로만 나누어지는 양의 정수를 의미한다.

길이 $R$의 순열 $P$가 주어진다. 길이 $R$의 순열은 $1$부터 $R$까지의 정수가 단 한 번씩만 존재하는 수열이다.

당신은 $R$행 $C$열의 2차원 배열에 주어진 소수들을 단 한 번씩만 사용하여 배치할 수 있다. 배열의 각 자리에 최대 하나의 소수만이 들어갈 수 있다.

소수를 배치한 이후에는 각 행마다 가중치를 얻을 것이다. $i$번째 행의 가중치는 $i$번째 행에 존재하는 모든 소수들을 한 번씩 곱한 값으로 계산된다. ($1\leq i \leq R$)

당신은 올바른 소수의 배치 중 각 행의 가중치들을 작은 순서대로 나열했을 때, $i$번째 행의 가중치가 각각 $P_i$번째에 위치하도록 하는 배치의 수를 구해야 한다.

입력

입력은 아래와 같이 주어진다.

$R$ $C$

$A_1$ $A_2$ ... $A_{RC}$

$P_1$ $P_2$ ... $P_R$

출력

가능한 배치의 수를 $998\,244\,353$으로 나눈 나머지를 출력한다. $998\,244\,353$은 소수이다.

제한

  • $1 \leq R,C \leq 500$
  • $2 \leq A_i < 10^7$
  • $A_i$는 소수이다.
  • $1 \leq P_i \leq R$

서브태스크

번호배점제한
110

$R=1$인 경우만 주어진다.

230

$R\times C\leq 9$이고, $A_i<100$인 소수만 주어진다.

360

추가적인 제약 조건이 없다.

예제 입력 1

2 1
5 3
1 2

예제 출력 1

1

주어진 조건을 만족하는 배치는 아래와 같다.

3
5

예제 입력 2

3 2
17 2 5 11 43 19
1 3 2

예제 출력 2

120

예제 입력 3

4 4
2 3 5 7 11 13 17 19 23 29 31 37 41 43 47 59
1 2 3 4

예제 출력 3

315591831

채점 및 기타 정보

  • 예제는 채점하지 않는다.