const MOD int = 1000000007 func checkRecord(n int) int { // A, L, P var dp = [2][3]int{{1, 1, 0}, {1, 0, 0}} for i := 1; i < n; i++ { var nxt [2][3]int for A := 0; A <= 1; A++ { for L := 0; L <= 2; L++ { nxt[A][0] += dp[A][L] // Append P if L > 0 { nxt[A][L] += dp[A][L-1] // Append L } if A > 0 { nxt[A][0] += dp[A-1][L] // Append A } nxt[A][L] %= MOD } } dp = nxt } sum := 0 for i := range dp { for _, v := range dp[i] { sum = (sum + v) % MOD } } return sum }