← Home
```go
package main

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

func main() {
	in := bufio.NewReader(os.Stdin)
	out := bufio.NewWriter(os.Stdout)
	defer out.Flush()

	var t int
	fmt.Fscan(in, &t)
	for ; t > 0; t-- {
		var n int
		var s string
		fmt.Fscan(in, &n)
		fmt.Fscan(in, &s)

		allSame := true
		for i := 1; i < n; i++ {
			if s[i] != s[0] {
				allSame = false
				break
			}
		}
		if allSame {
			fmt.Fprintln(out, (n+2)/3)
			continue
		}

		start := 0
		for i := 0; i < n; i++ {
			if s[i] != s[(i+1)%n] {
				start = (i + 1) % n
				break
			}
		}

		ans := 0
		run := 1
		for j := 1; j < n; j++ {
			prev := (start + j - 1) % n
			curr := (start + j) % n
			if s[curr] == s[prev] {
				run++
			} else {
				ans += run / 3
				run = 1
			}
		}
		ans += run / 3

		fmt.Fprintln(out, ans)
	}
}
```