#1040. 出栈序列统计(版本I:选1_P84)

出栈序列统计(版本I:选1_P84)

Description

栈是常用的一种数据结构,有n个元素在栈顶端一侧等待进栈,栈顶端另一侧是出栈序列。你已经知道栈的操作有两种:push和pop,前者是将一个元素进栈,后者是将栈顶元素弹出。现在要使用这两种操作,由一个操作序列可以得到一系列的输出序列。

请你编程求出对于给定的n,计算并输出由操作数序列1,2,...,n,经过一系列操作可能得到的输出序列总数。

Format

Input

输入两个正整数n,k(1<=n<=1000,n表示n个元素,k表示栈的大小k<=n)。

Output

输出若干行,每行给出可能的出栈序列。

最后一行,输出可行的出栈序列总数量。

Samples

3 2
1 2 3
1 3 2
2 1 3
2 3 1
4

Limitation

1s, 1024KiB for each test case.

说明:本题是教材P84的通用版,若输入k>=n时,则为教材中统计的所有出栈序列。