#include #ifdef ONLINE_JUDGE #define dbg(...) #else #include "debug.h" #endif using namespace std; #define ll long long #define endl '\n' #define all(x) x.begin(), x.end() #define sz(x) (int)(x).size() #define yes cout<<"YES"<>=1;}return ans;} const int N=3e5+10, M=1e9+7; int dp[N]; int func(int n) { if(n==0 || n==1) return 1; if(dp[n]!=-1) return dp[n]; dp[n]=(func(n-1)+(2ll*(n-1)*func(n-2))%M)%M; return dp[n]; } void solve() { int n,k; cin>>n>>k; memset(dp,-1,sizeof(dp)); int used=0; for(int i=0; i>r>>c; used += 2-(r==c); } int m=n-used; int ans=func(m); cout<> TC; while (TC--) solve(); }