← Home
package main

import (
	"bytes"
	"fmt"
	"io"
	"os"
)

func nextInt(data []byte, idx *int) int {
	n := len(data)
	for *idx < n && (data[*idx] < '0' || data[*idx] > '9') {
		*idx++
	}
	sign := 1
	if *idx < n && data[*idx] == '-' {
		sign = -1
		*idx++
	}
	val := 0
	for *idx < n && data[*idx] >= '0' && data[*idx] <= '9' {
		val = val*10 + int(data[*idx]-'0')
		*idx++
	}
	return val * sign
}

func main() {
	data, _ := io.ReadAll(os.Stdin)
	idx := 0
	n := nextInt(data, &idx)
	m := nextInt(data, &idx)
	k := nextInt(data, &idx)

	for i := 0; i < n*m; i++ {
		nextInt(data, &idx)
	}

	p := m * (m - 1) / 2
	var out bytes.Buffer
	fmt.Fprintln(&out, p)
	if k == 0 {
		for i := 1; i <= m; i++ {
			for j := i + 1; j <= m; j++ {
				fmt.Fprintln(&out, i, j)
			}
		}
	} else {
		for i := 1; i <= m; i++ {
			for j := i + 1; j <= m; j++ {
				fmt.Fprintln(&out, j, i)
			}
		}
	}
	os.Stdout.Write(out.Bytes())
}