소수방진은 5×5 격자의 각 칸에 한 자리 숫자를 채운 것으로, 다음을 모두 만족한다: 다섯 개의 행(각각 왼쪽에서 오른쪽으로 읽음), 다섯 개의 열(각각 위에서 아래로 읽음), 그리고 두 대각선(둘 다 왼쪽에서 오른쪽으로, 즉 열 번호가 커지는 방향으로 읽음)이 모두 다섯 자리 소수가 되어야 한다. 주대각선은 왼쪽 위 칸에서 오른쪽 아래 칸으로, 반대각선은 왼쪽 아래 칸에서 오른쪽 위 칸으로 읽는다.
예를 들어 아래 격자는 하나의 소수방진이다.
1 1 3 5 1
3 3 2 0 3
3 0 3 2 3
1 4 0 3 3
3 3 3 1 1
우리는 다음 조건을 모두 만족하는 소수방진을 찾으려 한다.
조건을 만족하는 소수방진을 모두 구한다.
첫째 줄에 모든 소수가 가져야 하는 각 자리 숫자의 합이 주어진다.
둘째 줄에 소수방진의 가장 왼쪽 위 칸에 들어갈 숫자가 주어진다.
조건을 만족하는 모든 소수방진을 출력한다. 각 소수방진은 5줄에 걸쳐 한 줄에 5글자씩 출력하고, 서로 다른 소수방진 사이에는 빈 줄을 하나 넣는다.
소수방진이 여러 개이면, 각 소수방진을 첫 행부터 마지막 행까지 이어 붙인 25글자 문자열을 기준으로 사전순 오름차순으로 정렬하여 출력한다. 조건을 만족하는 소수방진이 하나도 없으면 아무것도 출력하지 않는다.