← Home
```go
package main

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

func max(a, b int64) int64 {
	if a > b {
		return a
	}
	return b
}

func min(a, b int64) int64 {
	if a < b {
		return a
	}
	return b
}

var scanner = bufio.NewScanner(os.Stdin)

func init() {
	scanner.Split(bufio.ScanWords)
}

func readInt() int {
	scanner.Scan()
	val, _ := strconv.Atoi(scanner.Text())
	return val
}

func computePath1(row1, row2 []int, m int) int64 {
	var mx int64 = 0
	k := 1
	for i := 1; i < m; i++ {
		k++
		a := row1[i]
		add := 2*m + 1 - k
		mx = max(mx, int64(a)+int64(add))
	}
	for i := m - 1; i >= 0; i-- {
		k++
		a := row2[i]
		add := 2*m + 1 - k
		mx = max(mx, int64(a)+int64(add))
	}
	return mx
}

func computePath2(row1, row2 []int, m int) int64 {
	var mx int64 = 0
	k := 1
	for i := 0; i < m; i++ {
		k++
		a := row2[i]
		add := 2*m + 1 - k
		mx = max(mx, int64(a)+int64(add))
	}
	for i := m - 1; i >= 1; i-- {
		k++
		a := row1[i]
		add := 2*m + 1 - k
		mx = max(mx, int64(a)+int64(add))
	}
	return mx
}

func computeSnake(row1, row2 []int, m int) int64 {
	var mx int64 = 0
	k := 1
	k++
	a := row2[0]
	add := 2*m + 1 - k
	mx = max(mx, int64(a)+int64(add))
	if m == 1 {
		return mx
	}
	k++
	a = row2[1]
	add = 2*m + 1 - k
	mx = max(mx, int64(a)+int64(add))
	k++
	a = row1[1]
	add = 2*m + 1 - k
	mx = max(mx, int64(a)+int64(add))
	for i := 2; i < m; i += 2 {
		k++
		a = row1[i]
		add = 2*m + 1 - k
		mx = max(mx, int64(a)+int64(add))
		k++
		a = row2[i]
		add = 2*m + 1 - k
		mx = max(mx, int64(a)+int64(add))
		if i+1 < m {
			k++
			a = row2[i+1]
			add = 2*m + 1 - k
			mx = max(mx, int64(a)+int64(add))
			k++
			a = row1[i+1]
			add = 2*m + 1 - k
			mx = max(mx, int64(a)+int64(add))
		}
	}
	return mx
}

func main() {
	t := readInt()
	for i := 0; i < t; i++ {
		m := readInt()
		row1 := make([]int, m)
		for i := 0; i < m; i++ {
			row1[i] = readInt()
		}
		row2 := make([]int, m)
		for i := 0; i < m; i++ {
			row2[i] = readInt()
		}
		t1 := computePath1(row1, row2, m)
		t2 := computePath2(row1, row2, m)
		t3 := computeSnake(row1, row2, m)
		ans := min(t1, min(t2, t3))
		fmt.Println(ans)
	}
}
```