```go
package main
import (
"bufio"
"fmt"
"os"
)
func max(a, b int) int {
if a > b {
return a
}
return b
}
func main() {
in := bufio.NewReader(os.Stdin)
var t int
fmt.Fscan(in, &t)
for i := 0; i < t; i++ {
var n, m int
fmt.Fscan(in, &n, &m)
a := make([][]int, n)
for i := 0; i < n; i++ {
a[i] = make([]int, m)
for j := 0; j < m; j++ {
fmt.Fscan(in, &a[i][j])
}
}
current := make(map[[4]int]struct{})
var zero [4]int
current[zero] = struct{}{}
for j := 0; j < m; j++ {
newCurrent := make(map[[4]int]struct{})
for r := range current {
for k := 0; k < n; k++ {
var v [4]int
for i := 0; i < n; i++ {
p := (i - k + n) % n
v[i] = a[p][j]
}
var newr [4]int
for i := 0; i < n; i++ {
newr[i] = max(r[i], v[i])
}
for i := n; i < 4; i++ {
newr[i] = 0
}
newCurrent[newr] = struct{}{}
}
}
current = newCurrent
}
var ans int
for r := range current {
s := 0
for i := 0; i < n; i++ {
s += r[i]
}
if s > ans {
ans = s
}
}
fmt.Println(ans)
}
}
```