← Home
package main

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

func main() {
	scanner := bufio.NewScanner(os.Stdin)
	var lines []string
	maxLen := 0

	for scanner.Scan() {
		line := scanner.Text()
		lines = append(lines, line)
		if len(line) > maxLen {
			maxLen = len(line)
		}
	}

	border := strings.Repeat("*", maxLen+2)
	fmt.Println(border)

	favorLeft := true
	for _, line := range lines {
		diff := maxLen - len(line)
		var leftPad, rightPad int
		if diff%2 == 0 {
			leftPad = diff / 2
			rightPad = diff / 2
		} else {
			if favorLeft {
				leftPad = diff / 2
				rightPad = diff - leftPad
				favorLeft = false
			} else {
				leftPad = diff/2 + 1
				rightPad = diff - leftPad
				favorLeft = true
			}
		}
		fmt.Printf("*%s%s%s*\n", strings.Repeat(" ", leftPad), line, strings.Repeat(" ", rightPad))
	}

	fmt.Println(border)
}