← Home
package main

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

func main() {
	var n, k int
	if _, err := fmt.Scan(&n, &k); err != nil {
		return
	}

	c := 0
	temp := n - 1
	for temp > 0 {
		temp /= k
		c++
	}

	out := bufio.NewWriter(os.Stdout)
	defer out.Flush()

	fmt.Fprintln(out, c)

	first := true
	for i := 0; i < n-1; i++ {
		for j := i + 1; j < n; j++ {
			d := 1
			u, v := i, j
			for u/k != v/k {
				u /= k
				v /= k
				d++
			}
			if !first {
				out.WriteByte(' ')
			}
			first = false
			out.WriteString(strconv.Itoa(d))
		}
	}
	out.WriteByte('\n')
}