← Home
 ```go
package main

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

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

    var t int
    fmt.Fscan(reader, &t)
    for tc := 0; tc < t; tc++ {
        var n int
        fmt.Fscan(reader, &n)
        a := make([]int, n)
        for i := 0; i < n; i++ {
            fmt.Fscan(reader, &a[i])
        }

        c := make([]int, 0, n)
        for i := 0; i < n; i++ {
            if i == 0 || a[i] != a[i-1] {
                c = append(c, a[i])
            }
        }

        m := len(c)
        if m <= 2 {
            fmt.Fprintln(writer, m)
            continue
        }

        ans := 2
        for i := 1; i < m-1; i++ {
            left := c[i] - c[i-1]
            right := c[i+1] - c[i]
            if (left > 0 && right < 0) || (left < 0 && right > 0) {
                ans++
            }
        }
        fmt.Fprintln(writer, ans)
    }
}
```