수식 완성하기

아직 제출이 없습니다시간 제한3초메모리 제한256 MB

문제

   * * *
×    * *
 -------
   * * *
 * * *
 -------
 * * * *

위와 같은 세로셈에서 별 하나를 숫자 하나로 바꿔 옳은 식을 만들려고 한다. 쓸 수 있는 숫자는 미리 정해져 있고, 같은 숫자를 여러 번 써도 되며, 주어진 숫자를 모두 쓸 필요는 없다. 0은 쓸 수 없다.

수식은 NN개의 줄로 이루어진다. 첫째 줄은 곱해지는 수, 둘째 줄은 곱하는 수이다. 셋째 줄부터 N1N-1째 줄까지는 부분곱이고, 위에서 ii번째 부분곱은 곱해지는 수와 곱하는 수의 오른쪽에서 ii번째 자리 숫자를 곱한 값이다. 마지막 NN째 줄은 두 수의 곱이다. ii째 줄에 적는 수는 자릿수가 정확히 SiS_i여야 하고, 그 수의 모든 자리가 쓸 수 있는 숫자여야 한다.

각 줄의 별 개수가 3, 2, 3, 3, 4이고 쓸 수 있는 숫자가 2, 3, 4, 6, 8인 경우, 그리고 별 개수가 3, 3, 3, 3, 3, 5이고 쓸 수 있는 숫자가 1, 2, 3, 4, 5, 9인 경우에 완성한 수식은 다음과 같다.

   2 2 2         1 1 1
×    2 2    ×    1 1 1
 -------     ---------
   4 4 4         1 1 1
 4 4 4         1 1 1
 -------     1 1 1
 4 8 8 4     ---------
             1 2 3 2 1

입력

첫째 줄에 수식의 줄 수 NN이 주어진다. 둘째 줄에 각 줄의 별 개수 S1,S2,,SNS_1, S_2, \dots, S_N이 공백으로 구분되어 주어진다. 셋째 줄에 쓸 수 있는 숫자의 개수 KK가 주어진다. 넷째 줄에 쓸 수 있는 숫자 KK개가 공백으로 구분되어 주어지며, 각각 1부터 9까지 중 하나이고 서로 다르다.

수식은 올바른 형태로만 주어진다. 즉 N=S2+3N = S_2 + 3이다. 또한 1S151 \le S_1 \le 5, 1S231 \le S_2 \le 3이다.

출력

주어진 숫자로 수식을 옳게 완성하는 경우의 수를 한 줄에 출력한다. 곱해지는 수와 곱하는 수 중 하나라도 다르면 서로 다른 경우로 센다.