package main

func convert(s string, numRows int) string {
	n := len(s)
	if n < 3 || numRows == 1 {
		return s
	}
	cycle := numRows*2 - 2
	arr := make([][]rune, numRows)
	for i, v := range s {
		idx := i % cycle
		if idx < numRows {
			arr[idx] = append(arr[idx], v)
		} else {
			arr[(numRows-1)*2-idx] = append(arr[(numRows-1)*2-idx], v)
		}
	}
	res := make([]rune, 0)
	for _, v := range arr {
		res = append(res, v...)
	}
	return string(res)
}

/* func main() {
	fmt.Println(convert("PAYPALISHIRING", 3))
	fmt.Println(convert("ABCDE", 4))
	fmt.Println("PAHNAPLSIIGYIR")
} */