GCD 테이블과 연속 부분 수열

n, m, k와 수열 a가 주어질 때, GCD 행렬 G[i][j] = gcd(i, j)의 어떤 행 i가 a를 연속한 열 구간으로 포함하는지 판정한다.

어려움8정수론수학구현완전 탐색아직 제출이 없습니다시간 제한2초메모리 제한512 MB

문제

크기가 n×mn \times m인 행렬 GG가 있다. G[i][j]G[i][j]에는 iijj의 최대공약수가 들어 있다 (1in1 \le i \le n, 1jm1 \le j \le m).

길이가 kk인 수열 a1,a2,,aka_1, a_2, \dots, a_k가 주어졌을 때, 이 수열이 GG의 한 행에 연속 부분 수열로 나타나는지 판정하는 프로그램을 작성하시오. 즉 모든 1lk1 \le l \le k에 대해 G[i][j+l1]=alG[i][j+l-1] = a_l을 만족하는 iijj가 존재하는지 구해야 한다. 여기서 1in1 \le i \le n, 1jmk+11 \le j \le m-k+1이다.

입력

첫째 줄에 nn, mm, kk가 주어진다 (1n,m10121 \le n, m \le 10^{12}, 1k100001 \le k \le 10000).

둘째 줄에 a1,a2,,aka_1, a_2, \dots, a_k가 주어진다 (1ai10121 \le a_i \le 10^{12}).

출력

주어진 수열이 GG에 연속 부분 수열로 나타나면 YES를, 나타나지 않으면 NO를 출력한다.

힌트

첫 번째 예제에서는 G[10][5]G[10][5]부터 G[10][9]G[10][9]까지가 주어진 수열과 일치한다.