#include<bits/stdc++.h>
typedef long int ll;
using namespace std;
ll mod = 1e9 + 7;
ll helper(ll val, ll j, ll finale, ll open, vector<ll> & arr, ll dp[][400])
{
if(open < 0)
return 0;
if(val > finale)
{
if(open == 0)
return 1ll;
else
return 0ll;
}
//else
if(dp[val][open] != -1)
return dp[val][open];
//else
if(arr[j] == val)
return dp[val][open] = helper(val + 1, j + 1, finale, open + 1, arr, dp)%mod;
else
{
ll one,two;
one = two = 0;
if(open > 0)
one = helper(val + 1, j, finale, open - 1, arr, dp);
two = helper(val + 1, j, finale, open + 1, arr, dp);
return dp[val][open] = (one%mod + two%mod)%mod;
}
}
int main()
{
ll t; cin >> t;
while(t--)
{
ll n,k; cin >> n >> k;
vector<ll> arr;
ll dp[400][400];
memset(dp, -1, sizeof(dp));
if(k == 0)
{
arr.push_back(-1);
cout << helper(1, 0, 2*n, 0, arr, dp) << endl;
continue;
}
for(ll i = 0 ; i<k ; i++)
{
ll t; cin >> t;
arr.push_back(t);
}
cout << helper(1, 0, 2*n, 0, arr, dp) << endl;
}
}
I2luY2x1ZGU8Yml0cy9zdGRjKysuaD4KdHlwZWRlZiBsb25nIGludCBsbDsKdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCmxsIG1vZCA9IDFlOSArIDc7CgpsbCBoZWxwZXIobGwgdmFsLCBsbCBqLCBsbCBmaW5hbGUsIGxsIG9wZW4sIHZlY3RvcjxsbD4gJiBhcnIsIGxsIGRwW11bNDAwXSkKICAgIHsKICAgIGlmKG9wZW4gPCAwKQogICAgICAgIHJldHVybiAwOwogICAgaWYodmFsID4gZmluYWxlKQogICAgICAgIHsKICAgICAgICBpZihvcGVuID09IDApCiAgICAgICAgICAgIHJldHVybiAxbGw7CiAgICAgICAgZWxzZQogICAgICAgICAgICByZXR1cm4gMGxsOwogICAgICAgIH0KICAgIC8vZWxzZQogICAgaWYoZHBbdmFsXVtvcGVuXSAhPSAtMSkKICAgICAgICByZXR1cm4gZHBbdmFsXVtvcGVuXTsKICAgIC8vZWxzZQogICAgaWYoYXJyW2pdID09IHZhbCkKICAgICAgICByZXR1cm4gZHBbdmFsXVtvcGVuXSA9IGhlbHBlcih2YWwgKyAxLCBqICsgMSwgZmluYWxlLCBvcGVuICsgMSwgYXJyLCBkcCklbW9kOwogICAgZWxzZSAKICAgICAgICB7CiAgICAgICAgbGwgb25lLHR3bzsKICAgICAgICBvbmUgPSB0d28gPSAwOwogICAgICAgIGlmKG9wZW4gPiAwKQogICAgICAgICAgICBvbmUgPSBoZWxwZXIodmFsICsgMSwgaiwgZmluYWxlLCBvcGVuIC0gMSwgYXJyLCBkcCk7CiAgICAgICAgdHdvID0gaGVscGVyKHZhbCArIDEsIGosIGZpbmFsZSwgb3BlbiArIDEsIGFyciwgZHApOwogICAgICAgIHJldHVybiBkcFt2YWxdW29wZW5dID0gKG9uZSVtb2QgKyB0d28lbW9kKSVtb2Q7CiAgICAgICAgfQogICAgfQoKaW50IG1haW4oKQp7CmxsIHQ7IGNpbiA+PiB0Owp3aGlsZSh0LS0pCiAgICB7CiAgICBsbCBuLGs7IGNpbiA+PiBuID4+IGs7CiAgICB2ZWN0b3I8bGw+IGFycjsKICAgIGxsIGRwWzQwMF1bNDAwXTsKICAgIG1lbXNldChkcCwgLTEsIHNpemVvZihkcCkpOwogICAgaWYoayA9PSAwKQogICAgICAgIHsKICAgICAgICBhcnIucHVzaF9iYWNrKC0xKTsKICAgICAgICBjb3V0IDw8IGhlbHBlcigxLCAwLCAyKm4sIDAsIGFyciwgZHApIDw8IGVuZGw7CiAgICAgICAgY29udGludWU7CiAgICAgICAgfQogICAgZm9yKGxsIGkgPSAwIDsgaTxrIDsgaSsrKQogICAgICAgIHsKICAgICAgICBsbCB0OyBjaW4gPj4gdDsKICAgICAgICBhcnIucHVzaF9iYWNrKHQpOwogICAgICAgIH0KICAgIGNvdXQgPDwgaGVscGVyKDEsIDAsIDIqbiwgMCwgYXJyLCBkcCkgPDwgZW5kbDsKICAgIH0KfQ==