← Home
For problem statement at 0-999/100-199/180-189/182/problemE.txt this is a correct solution, but verifier at 0-999/100-199/180-189/182/verifierE.go ends with reference failed on test 1: exec: "refE.bin": executable file not found in $PATH can you fix the verifier? ```go
package main

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

const MOD int64 = 1000000007

type Piece struct {
	typ int
	len int
	wid int
}

func nextInt(r *bufio.Reader) int {
	sign := 1
	val := 0
	b, err := r.ReadByte()
	for (b < '0' || b > '9') && b != '-' {
		if err != nil {
			return 0
		}
		b, err = r.ReadByte()
	}
	if b == '-' {
		sign = -1
		b, err = r.ReadByte()
	}
	for b >= '0' && b <= '9' {
		val = val*10 + int(b-'0')
		b, err = r.ReadByte()
		if err != nil {
			break
		}
	}
	return val * sign
}

func main() {
	in := bufio.NewReader(os.Stdin)
	out := bufio.NewWriter(os.Stdout)
	defer out.Flush()

	n := nextInt(in)
	l := nextInt(in)

	pieces := make([]Piece, 0, 2*n)
	for i := 0; i < n; i++ {
		a := nextInt(in)
		b := nextInt(in)
		pieces = append(pieces, Piece{typ: i, len: a, wid: b})
		if a != b {
			pieces = append(pieces, Piece{typ: i, len: b, wid: a})
		}
	}
	m := len(pieces)

	byLen := make([][]int, 101)
	for idx, p := range pieces {
		if p.len <= 100 {
			byLen[p.len] = append(byLen[p.len], idx)
		}
	}

	trans := make([][]int, m)
	for i := 0; i < m; i++ {
		w := pieces[i].wid
		if w <= 100 {
			for _, j := range byLen[w] {
				if pieces[j].typ != pieces[i].typ {
					trans[i] = append(trans[i], j)
				}
			}
		}
	}

	dp := make([][]int64, l+1)
	for i := range dp {
		dp[i] = make([]int64, m)
	}
	for i := 0; i < m; i++ {
		if pieces[i].len <= l {
			dp[pieces[i].len][i] = (dp[pieces[i].len][i] + 1) % MOD
		}
	}

	for s := 0; s <= l; s++ {
		for i := 0; i < m; i++ {
			val := dp[s][i]
			if val == 0 {
				continue
			}
			ns := s + pieces[i].wid
			if ns > l {
				continue
			}
			for _, j := range trans[i] {
				dp[ns][j] += val
				if dp[ns][j] >= MOD {
					dp[ns][j] -= MOD
				}
			}
		}
	}

	var ans int64 = 0
	for i := 0; i < m; i++ {
		ans += dp[l][i]
		if ans >= MOD {
			ans -= MOD
		}
	}
	fmt.Fprintln(out, ans%MOD)
}
```