정수 R, C가 주어진다. 이어 R×C개의 서로 다른 소수 A_i가 주어진다. 소수는 2 이상이고, 1과 자기 자신으로만 나누어지는 양의 정수를 의미한다.
길이 R의 순열 P가 주어진다. 길이 R의 순열은 1부터 R까지의 정수가 단 한 번씩만 존재하는 수열이다.
당신은 R행 C열의 2차원 배열에 주어진 소수들을 단 한 번씩만 사용하여 배치할 수 있다. 배열의 각 자리에 최대 하나의 소수만이 들어갈 수 있다.
소수를 배치한 이후에는 각 행마다 가중치를 얻을 것이다. i번째 행의 가중치는 i번째 행에 존재하는 모든 소수들을 한 번씩 곱한 값으로 계산된다. (1≤i≤R)
당신은 올바른 소수의 배치 중 각 행의 가중치들을 작은 순서대로 나열했을 때, i번째 행의 가중치가 각각 P_i번째에 위치하도록 하는 배치의 수를 구해야 한다.
입력은 아래와 같이 주어진다.
R C
A_1 A_2 ... A_RC
P_1 P_2 ... P_R
가능한 배치의 수를 998,244,353으로 나눈 나머지를 출력한다. 998,244,353은 소수이다.