← Home
For problem statement at 0-999/500-599/580-589/582/problemB.txt this is a correct solution, but verifier at 0-999/500-599/580-589/582/verifierB.go ends with All tests passed can you fix the verifier?  ```go
package main

import "fmt"

const m = 300
const inf = -1000000000

func multiply(a, b [m + 1][m + 1]int) [m + 1][m + 1]int {
	var c [m + 1][m + 1]int
	for i := 1; i <= m; i++ {
		for j := 1; j <= i; j++ {
			maxVal := inf
			for k := j; k <= i; k++ {
				if a[i][k] != inf && b[k][j] != inf {
					val := a[i][k] + b[k][j]
					if val > maxVal {
						maxVal = val
					}
				}
			}
			c[i][j] = maxVal
		}
	}
	return c
}

func main() {
	var n, T int
	fmt.Scan(&n, &T)
	a := make([]int, n)
	for i := 0; i < n; i++ {
		fmt.Scan(&a[i])
	}

	var mat [m + 1][m + 1]int
	for i := 1; i <= m; i++ {
		for j := 1; j <= m; j++ {
			mat[i][j] = inf
		}
		mat[i][i] = 0
	}

	for _, x := range a {
		row := make([]int, x+1)
		for j := 1; j <= x; j++ {
			row[j] = mat[x][j]
		}
		for i := x; i <= m; i++ {
			for j := 1; j <= x; j++ {
				if row[j] != inf {
					val := 1 + row[j]
					if val > mat[i][j] {
						mat[i][j] = val
					}
				}
			}
		}
	}

	var result [m + 1][m + 1]int
	for i := 1; i <= m; i++ {
		for j := 1; j <= m; j++ {
			result[i][j] = inf
		}
		result[i][i] = 0
	}

	t := T
	for t > 0 {
		if t&1 == 1 {
			result = multiply(mat, result)
		}
		mat = multiply(mat, mat)
		t >>= 1
	}

	ans := 0
	for j := 1; j <= m; j++ {
		if result[m][j] > ans {
			ans = result[m][j]
		}
	}
	fmt.Println(ans)
}
```