← Home
 ```go
package main

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

func abs64(x int64) int64 {
	if x < 0 {
		return -x
	}
	return x
}

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

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

	var N, M int64
	fmt.Fscan(reader, &N, &M)

	var C int
	fmt.Fscan(reader, &C)

	var minU, maxU, minV, maxV int64

	for i := 0; i < C; i++ {
		var x, y int64
		fmt.Fscan(reader, &x, &y)
		u := x + y
		v := x - y
		if i == 0 {
			minU = u
			maxU = u
			minV = v
			maxV = v
		} else {
			if u < minU {
				minU = u
			}
			if u > maxU {
				maxU = u
			}
			if v < minV {
				minV = v
			}
			if v > maxV {
				maxV = v
			}
		}
	}

	var H int
	fmt.Fscan(reader, &H)

	bestDist := int64(1<<63 - 1)
	bestIdx := 0

	for i := 1; i <= H; i++ {
		var x, y int64
		fmt.Fscan(reader, &x, &y)
		u := x + y
		v := x - y

		du := max(abs64(u-minU), abs64(u-maxU))
		dv := max(abs64(v-minV), abs64(v-maxV))
		d := du
		if dv > d {
			d = dv
		}

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

	fmt.Fprintln(writer, bestDist)
	fmt.Fprintln(writer, bestIdx)
}
```