package main

import (
	"fmt"
)

// 获取输入内容,返回字符串切片
func getInput() []string {
	var count int
	var str string
	fmt.Scan(&count)
	var strSlice []string
	for i := 0; i < count; i++ {
		fmt.Scan(&str)
		strSlice = append(strSlice, str)
	}
	return strSlice
}

// 比较两个字符串的大小。true:a>=b false:a<b
func comStr(a, b string) bool {
	var minLen int
	if len(a) < len(b) {
		minLen = len(a)
	} else {
		minLen = len(b)
	}
	for i := 0; i < minLen; i++ {
		if a[i] > b[i] {
			return true
		}
		if a[i] < b[i] {
			return false
		}
	}
	if len(a) >= len(b) {
		return true
	} else {
		return false
	}
}

// 为字符串切片排序
func sortSlice(strSlice []string) {
	for i := 0; i < len(strSlice); i++ {
		for j := i + 1; j < len(strSlice); j++ {
			if comStr(strSlice[i], strSlice[j]) {
				strSlice[i], strSlice[j] = strSlice[j], strSlice[i]
			}
		}
	}
	for _, value := range strSlice {
		fmt.Println(value)
	}
}

func main() {
	strSlice := getInput()
	sortSlice(strSlice)
}