만드는 중입니다

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

지그재그

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

요약
n개의 상자를 크기가 1 이상인 스택들로 나눌 때, 스택 크기가 오르내리기를 번갈아 하는 방법의 수를 998244353으로 나눈 나머지를 구합니다.
난이도

보통10점 중 7점

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

문제

Zack의 Zergonomics Zegree는 상점에서 상품을 진열하는 최적의 방법이 지그재그 모양으로 쌓는 것이라고 가르쳤다.

Zack은 가게 진열대에 한 줄로 놓을 상자 nn개를 진열해야 한다. 각 상자에는 피규어가 하나씩 들어 있다. 상자는 서로 위에 쌓을 수 있고, 모두 같은 모양이라 서로 구별되지 않는다. Zack은 스택의 개수를 정한 뒤, 각 스택이 비어 있지 않고 스택의 상자 수가 지그재그 수열을 이루도록 상자를 쌓아야 한다.

정확히 말하면, 왼쪽부터 1번부터 ss번까지 번호를 붙인 스택이 ss개(s≥1s \ge 1) 있고, ii번 스택에 aia_i개의 상자가 있다고 하자. 다음 조건을 만족해야 한다.

  • 각 ii (1≤i≤s1 \le i \le s)에 대해 ai≥1a_i \ge 1이다.
  • a1+a2+⋯+as=na_1 + a_2 + \dots + a_s = n이다.
  • 다음 중 하나 이상이 성립한다.
    • a1<a2>a3<a4>…a_1 < a_2 > a_3 < a_4 > \dots
    • a1>a2<a3>a4<…a_1 > a_2 < a_3 > a_4 < \dots

예를 들어 n=6n = 6이면 그림 M.1과 같이 12가지 방법이 있다.

그림 M.1: n=6n = 6일 때 가능한 12가지 방법 전부.

두 방법은 스택의 개수가 같고, 같은 위치의 스택마다 상자 수가 같을 때에만 같은 방법으로 본다.

Zack이 nn개의 상자를 쌓는 서로 다른 방법의 수를 998 244 353998\,244\,353으로 나눈 나머지를 구하라.

입력

첫 줄에 테스트 케이스의 개수 tt (1≤t≤300 0001 \le t \le 300\,000)가 주어진다. 이후 tt개의 테스트 케이스가 각각 한 줄에 정수 nn (1≤n≤300 0001 \le n \le 300\,000)으로 주어진다.

출력

각 테스트 케이스마다 nn개의 상자를 쌓는 서로 다른 방법의 수를 998 244 353998\,244\,353으로 나눈 나머지를 한 줄에 출력한다.

예제1

  1. 예제 1

    입력
    4
    5
    6
    7
    890
    
    예상 출력
    7
    12
    19
    502674609