package main import "fmt" import "reflect" type Swap struct { u, v int } func (s Swap) String() string { return fmt.Sprint(s.u, s.v) } func main() { var N int fmt.Scan(&N) A := make([]int, N) for i := range A { fmt.Scan(&A[i]) } var sw []Swap preA := make([]int, N) for { if reflect.DeepEqual(preA, A) { break } copy(preA, A) for i := range A { if N <= i+2 { break } j := i + 1 k := j + 1 if (A[i] < A[j] && A[j] > A[k]) || (A[i] > A[j] && A[j] < A[k]) { sw = append(sw, Swap{j, k}) A[j], A[k] = A[k], A[j] } } } fmt.Println(len(sw)) for i := range sw { fmt.Println(sw[i]) } var dummy int fmt.Scan(&dummy) }