만드는 중입니다

아직 만드는 중이라 바뀔 수 있습니다

베라와 개집 배정

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

요약
M = X*N마리의 개에게 주거지와 보조 주거지를 배정해, 어떤 집을 하나 닫아도 열린 집마다 잠자는 개가 X+1마리를 넘지 않도록 만든다.
난이도

보통10점 중 7점

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

문제

베라에게 11번부터 NN번까지 번호가 붙은 개집 NN개와 11번부터 MM번까지 번호가 붙은 개 MM마리가 있다. 여기서 M=X×NM = X \times N이다. 개집 ii는 정확히 XX마리 Pi,1,…,Pi,XP_{i,1}, \dots, P_{i,X}의 주 거처이면서 또 다른 XX마리 Si,1,…,Si,XS_{i,1}, \dots, S_{i,X}의 보조 거처여야 한다. 개마다 주 거처가 하나, 보조 거처가 하나 있고 둘은 서로 다른 개집이다.

밤마다 청소 때문에 개집이 최대 하나 닫힌다. 개는 자기 주 거처가 열려 있으면 그곳에서 자고, 닫혀 있으면 보조 거처에서 잔다. 어떤 개집도 닫히지 않는 밤을 포함해 가능한 모든 밤에, 열려 있는 개집마다 자는 개가 X+1X + 1마리를 넘지 않아야 한다.

조건을 모두 만족하는 배정을 하나 찾거나, 그런 배정이 없음을 판정하라.

입력

첫째 줄에 정수 NN과 XX가 주어진다 (1≤N,X≤20171 \le N, X \le 2017, X×N≤50000X \times N \le 50000).

출력

조건을 만족하는 배정이 없으면 첫째 줄에 -1을 출력한다.

배정이 있으면 NN개의 줄을 출력한다. ii번째 줄에는 정수 2X2X개를 출력한다. 먼저 개집 ii를 주 거처로 삼는 개 XX마리를 번호가 커지는 순서로, 이어서 개집 ii를 보조 거처로 삼는 개 XX마리를 번호가 커지는 순서로 쓴다.

조건을 만족하는 배정이 여러 가지이므로 다음 배정만 정답으로 인정한다. 11 이상 NN 이하인 모든 ii와 11 이상 XX 이하인 모든 kk에 대해, (i−1)X+k(i - 1)X + k번 개의 주 거처는 개집 ii이고 보조 거처는 개집 ((i+k−1) mod N)+1((i + k - 1) \bmod N) + 1이다.

노트

개집 번호와 개 번호는 모두 11번부터 시작한다. 어떤 개집도 닫히지 않는 밤도 정원 조건을 만족해야 하며, 그런 밤에는 개집마다 그곳을 주 거처로 삼는 개 XX마리가 그대로 잔다.

예제2

  1. 예제 1

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

    입력
    2 2
    
    예상 출력
    -1