만드는 중입니다

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

또또 수열 문제야

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

요약
길이 N인 수열 A의 모든 쌍 곱 A_i × A_j가 주어질 때, 원래 수열 A를 복원하거나 불가능하면 NO를 출력합니다.
난이도

보통10점 중 6점

유형
해시맵, 수학, 정렬, 배열
정답자
아직 제출이 없습니다

문제

길이 NN의 양의 정수로 이루어진 수열 AA가 주어질 때, 중복 집합(multiset) MM을 다음과 같이 정의한다. 중복 집합은 중복된 원소를 허용하는 집합이다.

M={Ai×Aj∣1≤i,j≤N}M=\{A_i \times A_j \mid 1\leq i,j\leq N\}

중복 집합 MM의 모든 원소가 주어질 때, 원래의 수열 AA를 찾아보자.

입력

첫 번째 줄에 수열 AA의 길이 NN이 주어진다. (1≤N≤1 0001\leq N \leq 1\,000)

두 번째 줄에 중복 집합 MM의 원소 m1,m2,…,mN2m_1, m_2, \dots, m_{N^2}이 공백으로 구분되어 주어진다. (1≤mi≤10181\leq m_i \leq 10^{18})

출력

원래의 수열 AA를 구성할 수 있다면 첫 번째 줄에 YES를 출력하고, 두 번째 줄에 수열 AA의 원소 A1,A2,…,ANA_1, A_2, \dots, A_N을 공백으로 구분하여 출력한다.

그렇지 않다면 첫 번째 줄에 NO를 출력한다.

가능한 답이 여러 개라면 그중 아무거나 출력한다.

예제2

  1. 예제 1

    입력
    3
    1 2 2 1 2 1 1 2 4
    
    예상 출력
    YES
    1 1 2
    
  2. 예제 2

    입력
    2
    1 3 4 9
    
    예상 출력
    NO