← Home
```go
package main

import (
	"fmt"
)

func main() {
	var n, m, k int
	if _, err := fmt.Scan(&n, &m, &k); err != nil {
		return
	}

	var to, dirStr string
	if _, err := fmt.Scan(&to, &dirStr); err != nil {
		return
	}

	var S string
	if _, err := fmt.Scan(&S); err != nil {
		return
	}

	cPos := k
	cDir := 0
	if dirStr == "head" {
		cDir = -1
	} else if dirStr == "tail" {
		cDir = 1
	}

	possible := make([]bool, n+1)
	possible[m] = true

	for i := 0; i < len(S); i++ {
		minute := i + 1
		ch := S[i]

		cOld := cPos
		cPos += cDir
		if cPos == 1 {
			cDir = 1
		} else if cPos == n {
			cDir = -1
		}
		cNew := cPos

		if ch == '0' {
			nextPossible := make([]bool, n+1)
			hasPossible := false
			for p := 1; p <= n; p++ {
				if possible[p] {
					for delta := -1; delta <= 1; delta++ {
						np := p + delta
						if np >= 1 && np <= n {
							if np != cOld && np != cNew {
								nextPossible[np] = true
								hasPossible = true
							}
						}
					}
				}
			}
			if !hasPossible {
				fmt.Printf("Controller %d\n", minute)
				return
			}
			possible = nextPossible
		} else {
			if i == len(S)-1 {
				fmt.Println("Stowaway")
				return
			}
			nextPossible := make([]bool, n+1)
			for p := 1; p <= n; p++ {
				if p != cNew {
					nextPossible[p] = true
				}
			}
			possible = nextPossible
		}
	}
	fmt.Println("Stowaway")
}
```