题目描述
如果有一个 1∼n 的排列 p1,p2,…,pn,假设存在这样一个排序算法:按 1,2,…,n−1 的顺序枚举 i,设 pi,pi+1,…,pn 中标号最小的是 pj,那么将 pi,pi+1,…,pj−1,pj 左右翻转变成 pj,pj−1,…,pi+1,pi,以此类推,知道 n−1 步全部执行完成。且该算法一定会执行 n−1 步,即使中间就排好了序也不会提前退出。
我们假设左右翻转区间 [i,j] 的操作代价是 ai,j,一次排序的代价是每次翻转的操作代价之和。现在请你计算出,当 p 取遍 n! 种排列时,所有情况的排序代价之和,并对答案模 998244353。
输入格式
输入第一行,一个整数 n。
接下来 n−1 行,第 i(1≤i<n) 行 n−i+1 个空格隔开的整数,第 j 个表示 ai,i+j−1。
输出格式
输出共一个正整数,表示所求答案。
5
1 2 3 4 5
1 2 3 4
1 2 3
1 2
1080
数据范围
- 对于20%的数据,1≤n≤10
- 对于50%的数据,1≤n≤16
- 对于70%的数据,1≤n≤50
- 对于100%的数据,1≤n≤500 , 1≤ai,j≤998244353