//while(!GM)
//Practice++;
#include <bits/stdc++.h>
using namespace std;
#include <ext/pb_ds/assoc_container.hpp>
#include <ext/pb_ds/tree_policy.hpp>
using namespace __gnu_pbds;
template <typename F> using o_set = tree<F, null_type, less<F>, rb_tree_tag, tree_order_statistics_node_update>;
template <typename F> using o_multiset = tree<F, null_type, less_equal<F>, rb_tree_tag, tree_order_statistics_node_update>;
#define wlo '\n'
#define fast ios::sync_with_stdio(false); cin.tie(nullptr);
#define int long long
const int mod= 1e9+7;// 998244353;
using ll =long long ;
ll exp(ll x, ll n, ll m) {
x %= m;
ll res = 1;
while (n > 0) {
if (n % 2 == 1) { res = res * x % m;
}
x = x * x % m;
n /= 2;
}
return res;
}
void dbrhawlo ()
{
int n;
cin>>n;
int cnt = 1 ;
for(int i =1;i<=2*n;i++)
{
cnt = (i*cnt)%mod;
}
int qwe = exp(2,mod-2,mod);// 2^(-1)
cnt=(cnt*qwe)%mod;
cout<<cnt<<wlo;
}
int32_t main()
{
fast;
int t=1;
cin>>t;
while(t--)
{
dbrhawlo();
}
return 0;
}
Ly93aGlsZSghR00pCi8vUHJhY3RpY2UrKzsKI2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CiNpbmNsdWRlIDxleHQvcGJfZHMvYXNzb2NfY29udGFpbmVyLmhwcD4KI2luY2x1ZGUgPGV4dC9wYl9kcy90cmVlX3BvbGljeS5ocHA+CnVzaW5nIG5hbWVzcGFjZSBfX2dudV9wYmRzOwp0ZW1wbGF0ZSA8dHlwZW5hbWUgRj4gdXNpbmcgb19zZXQgPSB0cmVlPEYsIG51bGxfdHlwZSwgbGVzczxGPiwgcmJfdHJlZV90YWcsIHRyZWVfb3JkZXJfc3RhdGlzdGljc19ub2RlX3VwZGF0ZT47CnRlbXBsYXRlIDx0eXBlbmFtZSBGPiB1c2luZyBvX211bHRpc2V0ID0gdHJlZTxGLCBudWxsX3R5cGUsIGxlc3NfZXF1YWw8Rj4sIHJiX3RyZWVfdGFnLCB0cmVlX29yZGVyX3N0YXRpc3RpY3Nfbm9kZV91cGRhdGU+OwojZGVmaW5lIHdsbyAnXG4nCiNkZWZpbmUgZmFzdCBpb3M6OnN5bmNfd2l0aF9zdGRpbyhmYWxzZSk7IGNpbi50aWUobnVsbHB0cik7CiNkZWZpbmUgaW50IGxvbmcgbG9uZwpjb25zdCBpbnQgbW9kPSAxZTkrNzsvLyA5OTgyNDQzNTM7CnVzaW5nIGxsID1sb25nIGxvbmcgOwoKbGwgZXhwKGxsIHgsIGxsIG4sIGxsIG0pIHsKICB4ICU9IG07CiAgbGwgcmVzID0gMTsKICB3aGlsZSAobiA+IDApIHsKICAgIGlmIChuICUgMiA9PSAxKSB7IHJlcyA9IHJlcyAqIHggJSBtOwogICAgIH0KICAgIHggPSB4ICogeCAlIG07CiAgICBuIC89IDI7CiAgfQogIHJldHVybiByZXM7Cn0Kdm9pZCBkYnJoYXdsbyAoKQp7CiAgICBpbnQgbjsKICAgIGNpbj4+bjsKICAgIGludCBjbnQgPSAxIDsKICAgIGZvcihpbnQgaSA9MTtpPD0yKm47aSsrKQogICAgewogICAgICAgIGNudCA9IChpKmNudCklbW9kOwogICAgfQogICAgaW50IHF3ZSA9IGV4cCgyLG1vZC0yLG1vZCk7Ly8gMl4oLTEpCiAgICBjbnQ9KGNudCpxd2UpJW1vZDsKICAgIGNvdXQ8PGNudDw8d2xvOwoKfQppbnQzMl90ICBtYWluKCkKewogICAgZmFzdDsKICAgIGludCB0PTE7CiAgICBjaW4+PnQ7CiAgICB3aGlsZSh0LS0pCiAgICB7CiAgICAgICAgICAgIGRicmhhd2xvKCk7CiAgICB9CiAgICByZXR1cm4gMDsKfQ==