훈련소로 가는 날

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

요약
길이 N이고 값이 1부터 M까지인 수열 중에서, 이웃한 세 항이 산(가운데가 양옆보다 큰 경우)을 이루지 않는 수열의 개수를 998244353으로 나눈 나머지를 구한다.
난이도

보통10점 중 6점

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

문제

훈련소로 가는 날 욱제는 문득 떠올렸다. 훈련소가 논산에 있는 이유는 무엇일까? 왜 why?

그것은 바로…

논산(non-산)은 산이 아니기 때문이다. 길이가 3인 수열 a1,a2,a3a_1, a_2, a_3가 산임은 a1<a2>a3a_1 < a_2 > a_3임을 의미한다. 어떤 수열이 논산임은 수열의 인접한 세 항이 산인 경우가 없음을 의미한다. 다시 말해, 길이 NN의 수열 aa에 대해 2≤i<N2 \le i < N이고 ai−1<ai>ai+1a_{i-1} < a_i > a_{i+1}인 경우가 없다.

논산인 수열이 몇 개가 있는지 알아보자.

입력

첫째 줄에 NN과 MM이 주어진다.

출력

11 이상 MM 이하의 정수로 이루어진 길이 NN의 수열 중 논산인 것의 개수를 998 244 353998\,244\,353으로 나눈 나머지를 출력한다.

제한

  • 1≤N≤1 0001 \le N \le 1\,000
  • 1≤M≤1001 \le M \le 100

예제2

  1. 예제 1

    입력
    2 100
    
    예상 출력
    10000
    
  2. 예제 2

    입력
    3 2
    
    예상 출력
    7