package main

import (
	"fmt"
	"sort"
	"strconv"
	"strings"
)

type byResultingIntValue []string

func (s byResultingIntValue) Len() int {
	return len(s)
}

func (s byResultingIntValue) Swap(i, j int) {
	s[i], s[j] = s[j], s[i]
}

func (s byResultingIntValue) Less(i, j int) bool {
	cmpInt1, _ := strconv.Atoi(s[i] + s[j])
	cmpInt2, _ := strconv.Atoi(s[j] + s[i])
	return cmpInt1 > cmpInt2
}

func getMaxInteger(nums []string) string {
	sort.Sort(byResultingIntValue(nums))
	return strings.Join(nums, "")
}

func getMinInteger(nums []string) string {
	sort.Sort(sort.Reverse(byResultingIntValue(nums)))
	return strings.Join(nums, "")
}

func main() {
	nums := strings.Split("79 82 34 83 69", " ")
	fmt.Printf("Max: %v\n", getMaxInteger(nums))
	fmt.Printf("Min: %v\n", getMinInteger(nums))
}