#include #include #include #include #include using namespace std; inline int read() { int x=0, f=0; char ch=getchar(); while (ch<'0' || ch>'9') f|=(ch=='-'), ch=getchar(); while ('0'<=ch && ch<='9') x=x*10+ch-'0', ch=getchar(); return f?-x:x; } typedef long long ll; typedef pair Pii; #define rep(i, l, r) for(int i=l; i<=r; i++) #define dow(i, l, r) for(int i=l; i>=r; i--) #define travel(x) for(edge *p=fir[x]; p; p=p->n) #define clr(x,c) memset(x, c, sizeof(x)) #define pb push_back #define all(x) (x).begin(),(x).end() #define maxn 1000009 #define Q 1000000007 int n, p[maxn], inv[maxn], G[maxn]; inline int C(int a, int b){return a<0?0:1LL*p[b]*inv[a]%Q*inv[b-a]%Q;} int main() { p[0]=1; rep(i, 1, 1e6) p[i]=1LL*p[i-1]*i%Q; inv[1]=1; rep(i, 2, 1e6) inv[i]=(Q-1LL*(Q/i)*inv[Q%i]%Q)%Q; inv[0]=1; rep(i, 1, 1e6) inv[i]=1LL*inv[i-1]*inv[i]%Q; G[0]=1; rep(i, 1, 5e5) G[i]=(C(i,i<<1)-C(i-1,i<<1)+Q)%Q; int t=read(); while (t--) { n=read(); int A=0; rep(a, 0, n/2) (A+=1LL*C(a<<1,n)*G[a]%Q)%=Q; printf("%d\n", A); } return 0; }