#include<cstdio> #include<cstdlib> #include<algorithm> using namespace std; #define ll long long #define N 2048 #define M 1000000007 int f[N],g[N],h[N],x[N],y[N],z[N]; int c[N][N]; int n,i,j,t,u,v,ans; int sum(int u,int v){ int w; w=u+v; if(w>=M)w-=M; if(w<0)w+=M; return w; } int main(){ c[0][0]=1; n=2000; for(i=1;i<=n;i++){ c[i][0]=1; for(j=1;j<=i;j++) c[i][j]=sum(c[i-1][j],c[i-1][j-1]); } f[0]=g[0]=h[0]=x[0]=y[0]=z[0]=1; f[1]=g[1]=h[1]=x[1]=y[1]=z[1]=1; for(i=2;i<=n;i++){ for(j=1;j<i;j++){ u=g[i-j]; v=y[i-j]; if(i-j==1)u=v=0; f[i]=sum(f[i],(ll)(f[i-j]+u)*g[j]%M*2%M*c[i-1][j-1]%M); x[i]=sum(x[i],(ll)(x[i-j]+v)*y[j]%M*c[i-1][j-1]%M); } for(j=1;j<=i;j++){ h[i]=sum(h[i],(ll)h[i-j]*f[j]%M*c[i-1][j-1]%M); z[i]=sum(z[i],(ll)z[i-j]*x[j]%M*c[i-1][j-1]%M); } for(j=1;j<i;j++){ g[i]=sum(g[i],(ll)h[j]*h[i-j]%M*c[i][j]%M); y[i]=sum(y[i],(ll)z[j]*z[i-j]%M*c[i][j]%M); } g[i]=sum(g[i],(ll)(h[i]-f[i])*c[i][j]%M); y[i]=sum(y[i],(ll)(z[i]-x[i])*c[i][j]%M); } scanf("%d",&t); for(;t;t--){ scanf("%d",&n); if(n==1)printf("1\n"); else{ ans=sum(f[n],g[n]); ans=sum(ans,ans); ans=sum(ans,-x[n]); ans=sum(ans,-y[n]); printf("%d\n",ans); } } return 0; }