아직 만들고 있는 페이지입니다.

이 페이지는 아직 만드는 중입니다. 보이는 내용은 바뀔 수 있습니다.

순열 선물하기

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

요약
1부터 N까지의 수를 어떤 순서로 나열했을 때 부분합 중 소수가 하나도 나오지 않도록 배열하고, 불가능하면 NO를 출력한다.
난이도

보통10점 중 5점

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

문제

준원이는 정수 1,2,⋯ ,N1,2,\cdots ,N을 가지고 있다. 준원이는 자신이 가지고 있는 정수를 하루에 하나씩 NN일에 걸쳐서 현석이에게 선물해 주려고 한다. 그런데, 현석이는 소수를 싫어하기 때문에 현석이가 지금까지 선물 받은 수의 합이 소수가 되는 날이 없도록 해야 한다.

준원이가 현석이를 만족시키면서 정수 1,2,⋯ ,N1,2,\cdots ,N을 선물하려면 어떤 순서로 선물해야 하는지 구해보자.

입력

첫째 줄에 정수 N(1≤N≤5,000)N(1\le N\le 5\\, 000)이 주어진다.

출력

첫째 줄에 현석이를 만족시키면서 정수 1,2,⋯ ,N1,2,\cdots ,N을 선물하는 방법이 있다면 YES를, 그렇지 않다면 NO를 출력한다.

현석이를 만족시키면서 정수 1,2,⋯ ,N1,2,\cdots ,N을 선물하는 방법이 있다면 둘째 줄에 ii번째 수가 ii번째 날에 선물한 정수가 되도록, 선물 순서를 나타내는 정수 NN개를 공백으로 구분하여 출력한다.

예제3

  1. 예제 1

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

    입력
    2
    
    예상 출력
    NO
    
  3. 예제 3

    입력
    1
    
    예상 출력
    YES
    1