만드는 중입니다

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

간선 세기

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

요약
각 연결 성분이 순환을 많아야 하나 가지는 n개 정점의 라벨 그래프 전체에서, 순환에 속한 변 개수의 합을 p로 나눈 나머지를 구한다.
난이도

어려움10점 중 8점

유형
조합론, 수학, 동적 계획법, 그래프
정답자
아직 제출이 없습니다

문제

단순 그래프의 각 연결 요소가 사이클을 최대 하나만 가질 때, 그 그래프를 좋은 그래프라고 부른다.

nn개의 레이블이 붙은 정점을 가진 모든 좋은 그래프에 대해, 사이클에 속하는 간선의 개수를 세려고 한다.

아주 큰 정수 계산을 피하기 위해, 간선 개수의 합을 pp로 나눈 나머지를 출력한다.

입력

여러 개의 테스트 케이스가 주어진다. 입력의 첫 줄에는 두 정수 TT와 pp가 주어진다 (1≤T≤30001 \le T \le 3000, 1≤p≤2301 \le p \le 2^{30}). TT는 테스트 케이스의 수이고, pp는 나눗셈의 나머지를 구할 때 쓰는 수이다. 각 테스트 케이스는 다음과 같다.

첫 줄에 정수 nn이 하나 주어진다 (1≤n≤30001 \leq n \leq 3000).

출력

각 테스트 케이스마다 간선 개수의 합을 pp로 나눈 나머지를 한 줄에 출력한다.

힌트

레이블이 붙은 정점 4개를 가진 좋은 그래프 중 사이클이 존재하는 것은 세 가지 종류가 있다.

각 종류의 그래프 수는 33, 1212, 44이다. 따라서 간선 개수의 합은 3×4+12×3+4×3=603 \times 4 + 12 \times 3 + 4 \times 3 = 60이다.

예제1

  1. 예제 1

    입력
    7 998244353
    1
    2
    3
    4
    5
    6
    7
    
    예상 출력
    0
    0
    3
    60
    1050
    19380
    393750