← Home
```go
package main

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

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

	var t int
	fmt.Fscan(in, &t)

	for i := 0; i < t; i++ {
		var n, m int
		fmt.Fscan(in, &n, &m)

		adj := make([][]int, n+1)
		deg := make([]int, n+1)

		for j := 0; j < m; j++ {
			var u, v int
			fmt.Fscan(in, &u, &v)
			adj[u] = append(adj[u], v)
			adj[v] = append(adj[v], u)
			deg[u]++
			deg[v]++
		}

		var leaf int
		for v := 1; v <= n; v++ {
			if deg[v] == 1 {
				leaf = v
				break
			}
		}

		intermediate := adj[leaf][0]
		y := deg[intermediate] - 1

		var center int
		for _, neighbor := range adj[intermediate] {
			if deg[neighbor] > 1 {
				center = neighbor
				break
			}
		}

		x := deg[center]
		fmt.Fprintln(out, x, y)
	}
}
```