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

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

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

	var n, m int
	fmt.Fscan(in, &n, &m)

	w := make([][]int64, n)
	for i := 0; i < n; i++ {
		w[i] = make([]int64, m)
		for j := 0; j < m; j++ {
			fmt.Fscan(in, &w[i][j])
		}
	}

	maxW := int64(0)
	for i := 0; i < n; i++ {
		for j := 0; j < m; j++ {
			if w[i][j] > maxW {
				maxW = w[i][j]
			}
		}
	}

	g := int64(0)
	for i := 0; i < n; i++ {
		for j := 0; j < m; j++ {
			d := w[i][j] - w[i][0] - w[0][j] + w[0][0]
			if d < 0 {
				d = -d
			}
			g = gcd(g, d)
		}
	}

	var k int64
	if g == 0 {
		k = maxW + 1
	} else {
		if g <= maxW {
			fmt.Fprintln(out, "NO")
			return
		}
		k = g
	}

	a := make([]int64, n)
	for i := 0; i < n; i++ {
		a[i] = w[i][0]
	}

	b := make([]int64, m)
	for j := 0; j < m; j++ {
		diff := w[0][j] - w[0][0]
		if diff >= 0 {
			b[j] = diff
		} else {
			b[j] = diff + k
		}
	}

	fmt.Fprintln(out, "YES")
	fmt.Fprintln(out, k)
	for i := 0; i < n; i++ {
		if i > 0 {
			fmt.Fprint(out, " ")
		}
		fmt.Fprint(out, a[i])
	}
	fmt.Fprintln(out)
	for j := 0; j < m; j++ {
		if j > 0 {
			fmt.Fprint(out, " ")
		}
		fmt.Fprint(out, b[j])
	}
	fmt.Fprintln(out)
}

func gcd(a, b int64) int64 {
	if a < 0 {
		a = -a
	}
	if b < 0 {
		b = -b
	}
	for b != 0 {
		a, b = b, a%b
	}
	return a
}
```