package main import ( "bufio" "fmt" "os" ) func main() { s := readLine() sRune := []rune(s) n := make([]rune, len(sRune)) max := make([]rune, len(sRune)) copy(max, sRune) for i := 0; i < len(s)-1; i++ { for j := i; j < len(s); j++ { copy(n, sRune) n[i], n[j] = n[j], n[i] if string(max) < string(n){ copy(max, n) } } } fmt.Println(string(max)) } var rdr = bufio.NewReaderSize(os.Stdin, 1000000) func readLine() string { buf := make([]byte, 0, 1000000) for { l, p, e := rdr.ReadLine() if e != nil { panic(e) } buf = append(buf, l...) if !p { break } } return string(buf) }