考虑一个二分图,其顶点分为左侧和右侧两部分,且边仅存在于不同部分的顶点之间。设 $A$ 为左侧顶点的一个子集。我们定义 $N(A)$ 为右侧顶点中至少与 $A$ 中一个顶点相邻的顶点集合。
如果左侧顶点的子集 $A$ 满足 $|N(A)| < |A|$,则称其为关键(critical)子集。
你的任务是找出一个二分图,使其左侧有 $n$ 个顶点,右侧有 $n$ 个顶点,且恰好有 $k$ 个关键子集。
输入格式
第一行包含两个整数 $n$ 和 $k$:二分图每一侧的顶点数以及要求的关键子集数量($1 \le n \le 20$,$0 \le k < 2^n$)。
输出格式
第一行输出一个整数 $m$:二分图中边的数量。
接下来的 $m$ 行描述图中的边。每一行包含两个整数 $a_i$ 和 $b_i$,描述一条从 $a_i$ 到 $b_i$ 的边($1 \le a_i, b_i \le n$)。
该图不得包含重边。此外,它必须恰好包含 $k$ 个关键子集。
如果存在多种可能的解,输出其中任意一个即可。保证在给定的输入限制下解总是存在的。
样例
输入 1
3 5
输出 1
2 1 1 2 1