합성인수분해

아직 제출이 없습니다시간 제한1초메모리 제한1024 MB

문제

소인수분해란 어떤 자연수를 소수의 곱으로 나타내는 것이다. 정수론을 끔찍하게 싫어하는 연두는 소수만 보면 치가 떨려, 대신에 자연수를 합성수의 곱으로 나타내는 “합성인수분해”라는 것을 만들었다.

자연수 NN의 합성인수분해는 다음의 조건을 모두 만족하는 수열 AA로 정의한다.

  • AA의 모든 원소는 합성수이다. (합성수란 11과 자기 자신 이외의 다른 약수를 가지는 정수이다.)
  • AA의 모든 원소의 곱은 NN이다.

하지만 연두는 NN의 합성인수분해가 여러 개이거나 존재하지 않을 수도 있다는 것을 깨달았다. 연두를 대신해 NN을 합성인수분해 해주는 프로그램을 만들어보자. 만약 가능한 결과가 여러 개일 경우, 사전 순으로 가장 앞서는 것을 선택해야 한다.

입력

다음과 같이 입력이 주어진다.

NN

출력

NN의 합성인수분해 중 사전순으로 가장 앞서는 수열의 원소들을 순서대로 공백으로 구분하여 출력한다.

합성인수분해가 불가능하다면 대신에 -1을 출력한다.

제한

  • 2 N10122 \le N \le 10^{12}
  • NN은 정수다.

힌트

수열 A=a_1,a_2,,a_nA = a\_1, a\_2, \dots, a\_n가 수열 B=b_1,b_2,,b_mB = b\_1, b\_2, \dots, b\_m보다 사전 순으로 앞선다는 것의 엄밀한 정의는, 다음 중 하나를 만족한다는 것이다.

  • a_1=b_1, a_2=b_2, , a_i1=b_i1a\_1=b\_1,\ a\_2=b\_2,\ \dots,\ a\_{i-1}=b\_{i-1}이고 a_i<b_ia\_i < b\_iii가 존재한다.
  • a_1=b_1, a_2=b_2, , a_n=b_na\_1=b\_1,\ a\_2=b\_2,\ \dots,\ a\_n=b\_n이고 n\<mn\<m이다.