type array [][]int func (a array) Len() int { return len(a) } func (a array) Less(i, j int) bool { return a[i][0] < a[j][0] } func (a array) Swap(i, j int) { a[i], a[j] = a[j], a[i] } type none struct{} func smallestRange(nums [][]int) []int { var a array set := make(map[int]none) for i := range nums { for _, num := range nums[i] { a = append(a, []int{num, i}) } } sort.Sort(a) l, r, k, n := 0, -1, len(nums), len(a) min := math.MaxInt32 res := make([]int, 2) for r < n { for len(set) != k { r++ } } }