Universal Cup Judging System

Universal Cup

時間限制: 1.5 s 記憶體限制: 1024 MB 總分: 100 可 Hack ✓
统计

Yana、Mino、White 和 Huzz 是最好的朋友。

在終於完成了教練苛刻的任務後,Huzz 贏得了休息的機會。在一個慵懶的下午,世界似乎慢了下來,籠罩在即將來臨的黃昏那溫暖、金色的薄霧中。微風輕拂,僅僅吹動了在穿過大橡樹葉子的陽光中翩翩起舞的微塵。

在這個昏昏欲睡、舒適的空閒中,Huzz 在他的軟鯊魚玩具裡發現了一個排列。他決定和朋友們分享這個排列以尋找樂趣。

Mino 喜歡拆分。他可以將這個排列拆分為若干個連續的段。

Yana 喜歡交換。他可以選擇一個連續的段,並交換其中的最大值和最小值。

具體來說,他們可以按任意順序、執行任意次數以下兩種操作:

  • 拆分(split):選擇一個長度大於 $1$ 的連續段。然後在其內部選擇一個位置,將其拆分為兩個相鄰的連續段。例如,$(a_i, \dots, a_j)$ 可以被拆分為 $(a_i, \dots, a_k)$ 和 $(a_{k+1}, \dots, a_j)$,其中 $i \le k < j$。
  • 交換(swap):選擇一個連續段,並交換其中的最大值和最小值。

在執行任意次數的操作後,他們停止操作,並將所有得到的段按其原始順序合併,從而形成一個新的排列。

White 喜歡計數。她想知道——他們總共可以得到多少個不同的排列?

由於結果可能非常大,你只需要求出答案對 $998\,244\,353$ 取模後的結果。

輸入格式

輸入的第一行包含一個整數 $n$($1 \le n \le 500$),表示排列的長度。

第二行包含 $n$ 個整數 $a_1, a_2, \cdots, a_n$($1 \le a_i \le n$),表示排列本身。保證 $\{a_n\}$ 是一個排列。

輸出格式

輸出一個整數,表示他們可以得到的不同排列的數量對 $998\,244\,353$ 取模後的結果。

範例

輸入

4
1 4 2 3

輸出

10

輸入

7
5 1 4 2 6 3 7

輸出

340

說明

在第一個範例中,以下是他們可以得到的所有可能排列:

$(1234), (1243), (1423), (1432), (4123), (4132), (4213), (4231), (4312), (4321)$

Discussions

About Discussions

The discussion section is only for posting: General Discussions (problem-solving strategies, alternative approaches), and Off-topic conversations.

This is NOT for reporting issues! If you want to report bugs or errors, please use the Issues section below.

Open Discussions 0
No discussions in this category.

Issues

About Issues

If you find any issues with the problem (statement, scoring, time/memory limits, test cases, etc.), you may submit an issue here. A problem moderator will review your issue.

Guidelines:

  1. This is not a place to publish discussions, editorials, or requests to debug your code. Issues are only visible to you and problem moderators.
  2. Do not submit duplicated issues.
  3. Issues must be filed in English or Chinese only.
Active Issues 0
No issues in this category.
Closed/Resolved Issues 0
No issues in this category.