성대한 퍼레이드
시간 제한2초메모리 제한1024 MB
k개의 서로 다른 소수를 정확히 쓰고, 모든 행과 열의 곱의 약수 개수가 같은 n×n 행렬을 10^7 이하 소수로 만들거나 불가능하면 -1을 출력합니다.
문제
그루는 성대한 퍼레이드를 열려고 한다. 퍼레이드의 핵심 순서는 미니언 군대를 배치하는 것이다.
퍼레이드는 한 변의 길이가 미터인 정사각형 중앙 광장에서 열린다. 광장은 가로세로 1미터 칸으로 나뉘어 있으므로 칸은 모두 개이다. 즉, 중앙 광장은 행렬이다.
그루는 각 미니언에게 소수가 적힌 색깔 티셔츠를 한 장씩 나눠 주었다. 같은 수가 적힌 티셔츠도 있을 수 있다. 이제 미니언들이 그루가 원하는 대로 배치되어야 한다. 배치할 때 광장의 각 칸에는 미니언이 정확히 한 명씩 선다.
배치에는 추가 조건이 두 가지 있다. 첫째, 퍼레이드에 참여하는 미니언의 티셔츠에 적힌 서로 다른 소수가 정확히 개여야 한다. 둘째, 각 행과 각 열에 있는 티셔츠 숫자들의 곱의 약수 개수가 모두 같아야 한다. 그루가 쓸 수 있는 티셔츠는 이하의 소수가 적힌 것뿐이다.
이 모든 조건을 만족하는 배치를 만들거나, 그런 배치가 불가능하다는 것을 밝혀라.
입력
한 줄에 두 정수 , 이 주어진다 (, ). 는 필요한 서로 다른 소수의 개수이고, 은 광장의 크기이다.
출력
모든 조건을 만족하는 이하의 소수로 이루어진 행렬을 출력하라. 불가능하면 -1을 출력하라.
힌트
첫 번째 입력 예시에서 행의 곱은 6과 35이고, 열의 곱은 10과 21이다. 이 수들은 모두 약수가 4개이다. 두 번째 입력 예시에서 첫 행, 셋째 행, 첫 열, 셋째 열의 곱은 12이고, 둘째 행과 둘째 열의 곱은 18이다. 두 값의 약수는 각각 6개이다. 세 번째 입력 예시는 배치가 불가능하다.