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')
}