#t332. 集合的划分(subset)

集合的划分(subset)

Background

Special for beginners, ^_^

Description

设 SS 是一个具有 nn 个元素的集合,S=a1,a2,…,anS={a_1,a_2,\dots,a_n},现将 SS 划分成 kk 个满足下列条件的子集合 S1,S2,…,SkS_1,S_2,\dots,S_k,且满足:

  1. Si≠ϕS_i\neq \phi

  2. $S_i \cap S_j = \phi\; (1\le i, \; j\le k, \; i\neq j)$

  3. S1∪S2∪S3∪⋯∪Sk=SS_1 \cup S_2 \cup S_3 \cup \cdots \cup S_k = S

则称 S1,S2,…,SkS_1,S_2,\dots,S_k 是集合 SS 的一个划分。它相当于把 SS 集合中的 nn 个元素 a1,a2,…,ana_1,a_2,\dots,a_n 放入 kk 个 (0<k≤n<30)(0\lt k \le n\lt 30) 无标号的盒子中,使得没有一个盒子为空。

请你确定 nn 个元素 a1,a2,…,ana_1,a_2,\dots,a_n 放入 kk 个无标号盒子中去的划分数 S(n,k)S(n,k)。

Format

Input

输入两个整数 nn 和 kk,均小于 30。

Output

输出一个整数,为划分数。

Samples

23 7
4382641999117305

Limitation

1s, 1024KiB for each test case.