CF1957C How Does the Rook Move?

题目描述

你在一个 $n\times n$ 的棋盘上玩一个游戏。 你每次可以选择在 $(r,c)$ 的位置放置一个**白色的车**,使得放置后所有车无法通过水平或垂直的方向攻击到其它车(无论颜色)。如果 $r\not=c$ 则电脑在 $(c,r)$ 处放一个**黑色的车**,可以证明,如果你的操作合法,电脑操作必定合法。 现在你已经放置了 $k$ 个白色的车(显然电脑也已经进行了对应操作),如果你继续放车直到没有合法的位置放车,则游戏结束。 你希望知道游戏结束时形成的局面的可能性。 答案对 $10^9+7$ 取模。 两个局面不同当且仅当某个位置上的车颜色不同或其中一个局面放了车而另一个没有。

输入格式

第一行一个整数 $t$,表示数据组数。 接下来对于每组数据,第一行两个整数 $n,k$。 接下来 $k$ 行,每行两个整数 $r_i,c_i$,表示已经放置的白车的位置。

输出格式

共 $t$ 行,每行一个整数,表示答案。

说明/提示

对于全部数据,满足 $ 1 \leq t \leq 10^4 $,$ 1 \leq n \leq 3 \times 10^5 $ , $ 0 \leq k \leq n $,$\sum n\le3\times10^5$。