유행성 독감

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

요약
첫날 감염자 집합과의 곱셈을 M으로 나눈 나머지를 반복해 K일째 감염자 집합을 구한다.
난이도

어려움10점 중 8점

유형
정수론, 수학, 그래프, 완전 탐색
정답자
아직 제출이 없습니다

문제

상근이가 사는 마을에 유행성 독감이 퍼지기 시작했다. 마을에는 총 MM 명이 살고, 각 사람은 00 번부터 M−1M-1 번까지 번호가 매겨져 있다. 독감은 딱 하루만 앓는다. 따라서 한 사람이 (서로 다른 날에) 여러 번 독감에 걸릴 수 있다.

독감은 다른 마을에 놀러 갔다 돌아온 사람들이 퍼뜨렸다. 이 사람들의 번호는 모두 알려져 있고, 첫째 날에 독감에 걸린 사람은 바로 이들뿐이다.

둘째 날부터는 매일 다음 규칙으로 독감이 퍼진다. 바로 이전 날에 독감에 걸린 사람 aa 와 첫째 날에 걸린 사람 bb 에 대해, 번호가 p=(a×b) mod Mp = (a \times b) \bmod M 인 사람 pp 가 모두 독감에 걸린다. 이때 aa 와 bb 는 같아도 된다.

예를 들어 마을에 101101 명이 살고 첫째 날에 걸린 사람이 55 와 5050 이라고 하자. 둘째 날에 걸리는 사람은 2525, 4848 (250 mod 101250 \bmod 101), 7676 (2500 mod 1012500 \bmod 101) 이다. 셋째 날에 걸리는 사람 중 하나는 7777 이다 ((48×50) mod 101(48 \times 50) \bmod 101).

KK 일째에 독감에 걸려 있는 사람을 모두 구하는 프로그램을 작성하시오.

입력

첫째 줄에 세 정수 KK, MM, NN 이 주어진다 (1≤K≤10181 \le K \le 10^{18}, 3≤M≤15003 \le M \le 1500, N<MN < M). NN 은 첫째 날에 독감에 걸린 사람의 수이다.

둘째 줄에는 첫째 날에 독감에 걸린 사람들의 번호가 공백으로 구분되어 주어진다.

출력

첫째 줄에 KK 일째에 독감에 걸려 있는 사람의 번호를 공백으로 구분하여 오름차순으로 출력한다.

예제3

  1. 예제 1

    입력
    1 100 3
    1 2 3
    
    예상 출력
    1 2 3
    
  2. 예제 2

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

    입력
    10 101 2
    5 50
    
    예상 출력
    36 44 57 65