← Home
For problem statement at 1000-1999/1900-1999/1950-1959/1957/problemE.txt this is a correct solution, but verifier at 1000-1999/1900-1999/1950-1959/1957/verifierE.go ends with All 100 tests passed can you fix the verifier? ```go
package main

import (
	"bufio"
	"fmt"
	"os"
)

const MAXN = 1000000
const MOD = 1000000007

var ans [MAXN + 1]int

func readInt(reader *bufio.Reader) int {
	var res int
	for {
		c, err := reader.ReadByte()
		if err != nil {
			return res
		}
		if c >= '0' && c <= '9' {
			res = int(c - '0')
			break
		}
	}
	for {
		c, err := reader.ReadByte()
		if err != nil || c < '0' || c > '9' {
			break
		}
		res = res*10 + int(c-'0')
	}
	return res
}

func main() {
	isPrime := make([]bool, MAXN+1)
	for i := 2; i <= MAXN; i++ {
		isPrime[i] = true
	}
	primes := []int{}
	for i := 2; i <= MAXN; i++ {
		if isPrime[i] {
			primes = append(primes, i)
			for j := i * 2; j <= MAXN; j += i {
				isPrime[j] = false
			}
		}
	}

	D := make([]int, MAXN+2)
	for _, p := range primes {
		limit := MAXN / p
		for k := 1; k <= limit; k++ {
			v := (p - (k % p)) % p
			if v > 0 {
				start := k * p
				end := start + p
				D[start] = (D[start] + v) % MOD
				if end <= MAXN {
					D[end] = (D[end] - v + MOD) % MOD
				}
			}
		}
	}

	current := 0
	for i := 1; i <= MAXN; i++ {
		current = (current + D[i]) % MOD
		val := current
		if i%8 >= 4 {
			val = (val + 2) % MOD
		}
		ans[i] = (ans[i-1] + val) % MOD
	}

	reader := bufio.NewReader(os.Stdin)
	writer := bufio.NewWriter(os.Stdout)
	defer writer.Flush()

	t := readInt(reader)
	for idx := 0; idx < t; idx++ {
		n := readInt(reader)
		fmt.Fprintln(writer, ans[n])
	}
}
```