func magicalString(n int) int {
	if n <= 1 {
		return n
	}
	l, pre, cnt := 3, 2, 1
	queue := []int{2}
	for l < n {
		inc := queue[0]
		queue = queue[1:]
		pre = 3 - pre
		for i := 0; i < inc && l < n; i++ {
			queue = append(queue, pre)
			l++
			if pre == 1 {
				cnt++
			}
		}
	}
	return cnt
}