선형대수학: 개념과 방법

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

요약
길이 2 이상인 모든 연속부분수열의 최댓값과 최솟값의 차가 소수가 되지 않도록 1부터 N까지의 순열을 구성하거나 존재하지 않음을 판별한다.
난이도

보통10점 중 7점

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

문제

선형대수학 공부를 하다가 질려버린 KSA 학생들은 아래 문제를 떠올렸다.

정수 NN이 주어졌을 때, 다음 조건을 만족하는 수열이 존재하는지 판별하고, 그러한 수열이 존재한다면 그중 아무거나 찾아보자.

  • 수열은 길이가 NN인 순열이다. 즉, 11 이상 NN 이하의 정수들이 정확히 한 번씩 등장한다.
  • 수열의 모든 길이가 22 이상인 연속부분수열 SS에 대해 max⁡(S)−min⁡(S)\max(S) - \min(S)의 값은 소수가 아니다.

어떤 수열 BB의 앞에서부터 00개 이상의 원소를 지우고 뒤에서부터 00개 이상의 원소를 지워서 수열 AA를 만들 수 있다면 수열 AA를 수열 BB의 연속부분수열이라고 부른다.

그러나 KSA 학생들은 소수를 구별할 수 없는 병에 걸려 당신에게 이 문제를 해결해줄 것을 요청했다.

입력

첫 번째 줄에 정수 NN이 주어진다.

출력

첫 번째 줄에 조건을 만족하는 수열이 존재한다면 YES, 아니라면 NO를 출력한다.

만약 그러한 수열 AA가 존재한다면, 두 번째 줄에 NN개의 정수 A_1,A_2,⋯ ,A_NA\_{1}, A\_{2}, \cdots, A\_{N}을 공백으로 구분하여 출력한다.

정답이 여러 개 존재한다면 그중 아무거나 출력해도 상관없다.

제한

  • 2≤N≤10002\leq N\leq 1000

예제2

  1. 예제 1

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

    입력
    10
    
    예상 출력
    YES
    5 4 8 2 10 1 9 3 7 6