For problem statement at 0-999/400-499/400-409/407/problemC.txt this is a correct solution, but verifier at 0-999/400-499/400-409/407/verifierC.go ends with All tests passed can you fix the verifier? ```go
package main
import (
"bufio"
"fmt"
"os"
"strconv"
)
var scanner *bufio.Scanner
func init() {
scanner = bufio.NewScanner(os.Stdin)
scanner.Buffer(make([]byte, 1024*1024), 1024*1024*10)
scanner.Split(bufio.ScanWords)
}
func nextInt() int {
scanner.Scan()
res, _ := strconv.Atoi(scanner.Text())
return res
}
const MOD = 1000000007
var fact [200005]int
var inv [200005]int
func power(base, exp int) int {
res := 1
base %= MOD
for exp > 0 {
if exp%2 == 1 {
res = (res * base) % MOD
}
base = (base * base) % MOD
exp /= 2
}
return res
}
func initFact() {
fact[0] = 1
inv[0] = 1
for i := 1; i <= 200000; i++ {
fact[i] = (fact[i-1] * i) % MOD
}
inv[200000] = power(fact[200000], MOD-2)
for i := 199999; i >= 1; i-- {
inv[i] = (inv[i+1] * (i + 1)) % MOD
}
}
func nCr(n, k int) int {
if k < 0 || k > n {
return 0
}
return fact[n] * inv[k] % MOD * inv[n-k] % MOD
}
var diff [105][100005]int
func main() {
initFact()
n := nextInt()
m := nextInt()
a := make([]int, n+1)
for i := 1; i <= n; i++ {
a[i] = nextInt() % MOD
}
for i := 0; i < m; i++ {
l := nextInt()
r := nextInt()
k := nextInt()
diff[k][l] = (diff[k][l] + 1) % MOD
if r+1 <= n {
for d := 0; d <= k; d++ {
val := nCr(r-l+k-d, k-d)
diff[d][r+1] = (diff[d][r+1] - val + MOD) % MOD
}
}
}
for k := 100; k >= 0; k-- {
for i := 1; i <= n; i++ {
diff[k][i] = (diff[k][i] + diff[k][i-1]) % MOD
}
if k > 0 {
for i := 1; i <= n; i++ {
diff[k-1][i] = (diff[k-1][i] + diff[k][i]) % MOD
}
}
}
out := bufio.NewWriter(os.Stdout)
defer out.Flush()
for i := 1; i <= n; i++ {
ans := (a[i] + diff[0][i]) % MOD
if i == n {
fmt.Fprintf(out, "%d\n", ans)
} else {
fmt.Fprintf(out, "%d ", ans)
}
}
}
```