만드는 중입니다

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

LEX_GCD

시간 제한1.5초메모리 제한1024 MB

요약
정수 수열의 원소 하나에 소수 X를 곱할 수 있을 때, K-gcd 동치인 순열 중 사전순으로 가장 작은 수열을 구합니다.
난이도

어려움10점 중 8점

유형
정수론, 그리디, 정렬
정답자
아직 제출이 없습니다

문제

주어진 양의 정수 NN개의 수열 a_1,a_2,…,a_Na\_1 , a\_2 , \dots , a\_N에 대해, 사전순으로 가장 작은 KK-gcd 동치 순열을 구하세요. 서로 순열 관계에 있는 두 수열 aa와 bb는, 1부터 NN까지의 인덱스 중 서로 다른 KK개를 고를 때마다 그 위치의 원소들의 gcd가 두 수열에서 같으면 KK-gcd 동치입니다.

탐색하기 전에 aa의 원소 중 최대 하나에 주어진 정수 XX를 곱할 수 있습니다. 곱하지 않고 그대로 둘 수도 있습니다. XX는 1 또는 소수이므로 약수는 1과 XX뿐입니다. 원소를 곱했다면, 결과는 곱한 뒤의 aa에 대한 KK-gcd 동치 수열이어야 하며 gcd도 곱한 뒤의 값으로 계산합니다.

입력

첫 줄에 테스트 케이스 수 TT가 주어집니다. 각 테스트 케이스는 정수 NN, KK, XX와 이어서 주어지는 양의 정수 NN개 a_1,a_2,…,a_Na\_1 , a\_2 , \dots , a\_N로 이루어집니다.

출력

각 테스트 케이스마다, 선택적 전처리를 거친 aa에 대한 사전순 최소 KK-gcd 동치 수열의 정수 NN개를 출력합니다.

제한

  • 2≤∑N≤1052 \le \sum N \le 10^5 (모든 테스트 케이스의 합)
  • 2≤K≤N2 \le K \le N
  • 1≤X≤1091 \le X \le 10^9, XX는 1 또는 소수
  • 1≤a_i≤1091 \le a\_i \le 10^9

예제1

  1. 예제 1

    입력
    2
    3 2 1
    2 6 4
    4 2 3
    7 3 6 9
    
    예상 출력
    2 4 6
    3 6 9 21