예선 라운드 F번 문제
시간 제한2초메모리 제한512 MB
양의 정수 a_i와 d가 주어질 때 합 a_i x_i = d를 만족하는 0이 아닌 x_i가 존재하는지 판정하고, 각 |D_i|를 최소로 만드는 규칙이 정한 유일한 수열을 출력한다.
문제
땅요정 폴이 땅요정 수학 컵 예선 라운드에 나갔다. F번 문제는 다음과 같다.
양의 정수 개 과 양의 정수 가 주어진다. 다음 식을 만족하면서 어느 것도 이 아니고 인 정수 을 구하라.
땅요정은 큰 수를 싫어하므로 모든 와 는 이하이고, 어떤 도 이 될 수 없다.
식을 만족하는 수열은 여러 개일 수 있어서 정답으로 인정하는 수열은 하나로 정해져 있다. 으로 두고 순서로 을 정의한다. 즉 는 의 최대공약수다. 구하는 수열이 존재할 필요충분조건은 이 를 나누는 것이다. 존재하면 왼쪽부터 차례로 값을 정한다. 로 두고 에 대해 다음과 같이 를 고른다.
- 는 이 아니고, 는 이 아닌 의 배수다.
- 그런 중에서 가 가장 작아지는 것을 고른다.
- 가 같은 후보가 둘이면 더 작은 를 고른다.
마지막 값은 이다. 이면 고르는 과정 없이 이다. 이 규칙이 만드는 값은 항상 을 만족한다.
입력
첫째 줄에 테스트의 개수 가 주어진다 (). 이어서 각 테스트가 주어진다.
각 테스트의 첫째 줄에는 두 정수 과 가 주어진다 (, ). 둘째 줄에는 개의 정수 가 주어진다 (). 모든 테스트의 을 더한 값은 을 넘지 않는다.
출력
각 테스트마다 답을 출력한다. 구하는 수열이 존재하면 한 줄에 YES를 출력하고, 다음 줄에 을 공백 하나로 구분해 출력한다. 위에서 정의한 수열만 정답으로 인정한다. 그런 수열이 없으면 그 테스트의 출력으로 NO만 출력한다.