← Home
```go
package main

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

func scanInt64(scanner *bufio.Scanner) int64 {
	scanner.Scan()
	res := int64(0)
	sign := int64(1)
	for _, c := range scanner.Bytes() {
		if c == '-' {
			sign = -1
		} else {
			res = res*10 + int64(c-'0')
		}
	}
	return res * sign
}

func main() {
	scanner := bufio.NewScanner(os.Stdin)
	scanner.Split(bufio.ScanWords)

	scanInt64(scanner)
	scanInt64(scanner)

	c := int(scanInt64(scanner))

	var minX int64 = 4000000000000000000
	var maxX int64 = -4000000000000000000
	var minY int64 = 4000000000000000000
	var maxY int64 = -4000000000000000000

	for i := 0; i < c; i++ {
		x := scanInt64(scanner)
		y := scanInt64(scanner)
		xp := x + y
		yp := x - y
		if xp < minX {
			minX = xp
		}
		if xp > maxX {
			maxX = xp
		}
		if yp < minY {
			minY = yp
		}
		if yp > maxY {
			maxY = yp
		}
	}

	h := int(scanInt64(scanner))

	var bestDist int64 = 4000000000000000000
	var bestIdx int = -1

	for i := 1; i <= h; i++ {
		x := scanInt64(scanner)
		y := scanInt64(scanner)
		xp := x + y
		yp := x - y

		d1 := xp - minX
		d2 := maxX - xp
		d3 := yp - minY
		d4 := maxY - yp

		maxD := d1
		if d2 > maxD {
			maxD = d2
		}
		if d3 > maxD {
			maxD = d3
		}
		if d4 > maxD {
			maxD = d4
		}

		if maxD < bestDist {
			bestDist = maxD
			bestIdx = i
		}
	}

	fmt.Printf("%d\n%d\n", bestDist, bestIdx)
}
```