For problem statement at 1000-1999/1500-1599/1540-1549/1542/problemE1.txt this is a correct solution, but verifier at 1000-1999/1500-1599/1540-1549/1542/verifierE1.go ends with All tests passed can you fix the verifier? package main
import (
"fmt"
)
func main() {
var n int
var mod int64
if _, err := fmt.Scan(&n, &mod); err != nil {
return
}
dp := make([][]int64, n+1)
for i := range dp {
dp[i] = make([]int64, n*(n-1)/2+1)
}
dp[0][0] = 1
for k := 1; k <= n; k++ {
maxJ := k * (k - 1) / 2
for j := 0; j <= maxJ; j++ {
for x := 0; x < k && x <= j; x++ {
dp[k][j] = dp[k][j] + dp[k-1][j-x]
if dp[k][j] >= mod {
dp[k][j] -= mod
}
}
}
}
var ans int64 = 0
for k := 0; k < n; k++ {
var ways int64 = 1
for j := k + 2; j <= n; j++ {
ways = (ways * int64(j)) % mod
}
maxV := k * (k - 1) / 2
suf := make([]int64, maxV+2)
for u := maxV; u >= 0; u-- {
suf[u] = suf[u+1] + dp[k][u]
if suf[u] >= mod {
suf[u] -= mod
}
}
var sumD int64 = 0
for d := 1; d <= k; d++ {
var factor int64 = int64(k + 1 - d)
var pairSum int64 = 0
for v := 0; v <= maxV; v++ {
if v+d+1 <= maxV {
pairSum = (pairSum + dp[k][v]*suf[v+d+1]) % mod
}
}
sumD = (sumD + factor*pairSum) % mod
}
ans = (ans + ways*sumD) % mod
}
fmt.Println(ans)
}