만드는 중입니다

아직 만드는 중이라 바뀔 수 있습니다

Bobby Tables

시간 제한2초메모리 제한512 MB

요약
X의 소인수분해와 상한 m이 주어질 때, 0 <= k <= n <= m이고 X = C(n, k)를 만족하는 n과 k를 찾고, 없으면 NO를 출력합니다.
난이도

보통10점 중 7점

유형
정수론, 조합론, 완전 탐색
정답자
아직 제출이 없습니다

문제

Bobby Tables는 좋아하는 큰 수를 데이터베이스에 저장한다. 이 수들은 메모리를 많이 차지하므로, 더 효율적인 저장 방법을 찾고 있다.

데이터베이스에는 큰 소인수가 없는 수 XX가 있다. Bobby는 XX가 비교적 작은 정수 nn, kk에 대해 X=(nk)X = \binom{n}{k} 꼴이라고 의심한다.

정수 mm과 XX의 소인수분해가 주어졌을 때, 0≤k≤n≤m0 \le k \le n \le m이고 X=(nk)X = \binom{n}{k}를 만족하는 정수 nn, kk가 존재하는지 판단하라.

입력

첫째 줄에 테스트 케이스의 개수 zz (1≤z≤10 0001 \le z \le 10\,000)가 주어진다. 각 테스트 케이스는 다음과 같이 주어진다.

테스트 케이스의 첫째 줄에는 정수 tt와 mm (1≤t,m≤150 0001 \le t, m \le 150\,000)이 주어진다. tt는 XX의 소인수분해에 나타나는 소수의 개수이고, mm은 출력 값의 상한이다.

둘째 줄에는 곱이 XX인 소수 p1,…,ptp_1, \ldots, p_t (2≤pi≤m2 \le p_i \le m)가 주어진다.

모든 테스트 케이스의 tt의 합은 200 000200\,000을 넘지 않는다. 모든 테스트 케이스의 mm의 합은 2 000 0002\,000\,000을 넘지 않는다.

출력

각 테스트 케이스에 대해 적절한 nn과 kk가 존재하면 첫째 줄에 "YES"를, 둘째 줄에 nn과 kk의 값을 출력한다. 존재하지 않으면 "NO"만 한 줄에 출력한다.

예제1

  1. 예제 1

    입력
    2
    2 5
    3 2
    3 7
    2 2 2
    
    예상 출력
    YES
    4 2
    NO