#P808. 升序排列(三)

升序排列(三)

题目描述

如果有一个 1n1 \sim n 的排列 p1,p2,,pnp_1,p_2,\ldots,p_n,假设存在这样一个排序算法:按 1,2,,n11,2,\ldots,n-1 的顺序枚举 ii,设 pi,pi+1,,pnp_i,p_{i+1},\ldots,p_n 中标号最小的是 pjp_j,那么将 pi,pi+1,,pj1,pjp_i,p_{i+1},\ldots,p_{j-1},p_j 左右翻转变成 pj,pj1,,pi+1,pip_j,p_{j-1},\ldots,p_{i+1},p_i,以此类推,知道 n1n-1 步全部执行完成。且该算法一定会执行 n1n − 1 步,即使中间就排好了序也不会提前退出。

我们假设左右翻转区间 [i,j][i,j] 的操作代价是 ai,ja_{i,j},一次排序的代价是每次翻转的操作代价之和。现在请你计算出,当 pp 取遍 n!n! 种排列时,所有情况的排序代价之和,并对答案模 998244353998244353

输入格式

输入第一行,一个整数 nn。 接下来 n1n-1 行,第 i(1i<n)i(1 \le i \lt n)ni+1n - i + 1 个空格隔开的整数,第 jj 个表示 ai,i+j1a_{i,i+j-1}

输出格式

输出共一个正整数,表示所求答案。

5 
1 2 3 4 5
1 2 3 4
1 2 3
1 2
1080

数据范围

  • 对于20%20\%的数据,1n101\leq n \leq 10
  • 对于50%50\%的数据,1n161\leq n \leq 16
  • 对于70%70\%的数据,1n501\leq n \leq 50
  • 对于100%100\%的数据,1n5001\leq n \leq 500 , 1ai,j9982443531 \leq a_{i,j} \leq 998244353