별 수호자 룰루

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

요약
1부터 N까지의 수를 K개씩 N/K개 조로 나누어 어느 조의 합도 K로 나누어떨어지지 않게 만들고, 불가능하면 NO를 출력한다.
난이도

보통10점 중 6점

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

문제

온 우주의 별을 수호하는 임무를 맡은 룰루는 자신의 일을 분담할 NN명의 별 수호자를 선발했다. 별 수호자는 전투력이라는 고유한 수치를 가지며 ii번 신입 별 수호자의 전투력 P_iP\_i의 값은 ii다.

룰루는 모든 신입 별 수호자가 KK명씩 하나의 조를 이루도록 총 NK\frac{N}{K}개의 조를 만들고, 각 조를 하나의 별에 배정하려고 한다. 이때 NN은 KK로 나누어떨어진다. 다만 조를 별에 배정할 때는 다음과 같은 주의사항이 있다.

같은 별에 배정된 별 수호자들의 전투력의 합이 KK로 나누어떨어지면 별이 붕괴하기 시작한다!

수학에 약한 룰루를 위해 별이 붕괴하지 않도록 별 수호자들을 어떻게 배정해야 하는지 알려주도록 하자!

입력

첫 번째 줄에 정수 NN과 KK가 공백을 사이에 두고 주어진다. NN은 KK로 나누어떨어진다. (1≤N,K≤1,000,000)(1 \leq N, K \leq 1\\,000\\,000)

출력

첫 번째 줄에 어느 별도 붕괴하지 않도록 모든 별 수호자를 배정하는 것이 가능하다면 YES, 아니면 NO를 출력한다.

가능한 경우가 존재한다면 그중 하나를 다음 NK\frac{N}{K}개의 줄에 걸쳐, 같은 별에 배정할 별 수호자의 번호를 한 줄에 KK개씩 공백을 사이에 두고 출력한다.

예제1

  1. 예제 1

    입력
    6 3
    
    예상 출력
    YES
    1 4 3
    2 5 6