description: CQXYM is counting permutations length of 2n.
  
  A permutation is an array consisting of n distinct integers from 1 to n in arbitrary order. For example, [2,3,1,5,4] is a permutation, but [1,2,2] is not a permutation (2 appears twice in the array) and [1,3,4] is also not a permutation (n=3 but there is 4 in the array).
  
  A permutation p(length of 2n) will be counted only if the number of i satisfying p_i<p_{i+1} is no less than n. For example:
  
    * Permutation [1, 2, 3, 4] will count, because the number of such i that p_i<p_{i+1} equals 3 (i = 1, i = 2, i = 3).
    * Permutation [3, 2, 1, 4] won't count, because the number of such i that p_i<p_{i+1} equals 1 (i = 3). 
  
  
  
  CQXYM wants you to help him to count the number of such permutations modulo 1000000007 (10^9+7).
  
  In addition, [modulo operation](https://en.wikipedia.org/wiki/Modulo_operation) is to get the remainder. For example:
  
    * 7 mod 3=1, because 7 = 3 ⋅ 2 + 1, 
    * 15 mod 4=3, because 15 = 4 ⋅ 3 + 3. 
  
  Input
  
  The input consists of multiple test cases. 
  
  The first line contains an integer t (t ≥ 1) — the number of test cases. The description of the test cases follows.
  
  Only one line of each test case contains an integer n(1 ≤ n ≤ 10^5).
  
  It is guaranteed that the sum of n over all test cases does not exceed 10^5
  
  Output
  
  For each test case, print the answer in a single line.
  
  Example
  
  Input
  
  
  4
  1
  2
  9
  91234
  
  
  Output
  
  
  1
  12
  830455698
  890287984
  
  Note
  
  n=1, there is only one permutation that satisfies the condition: [1,2].
  
  In permutation [1,2], p_1<p_2, and there is one i=1 satisfy the condition. Since 1 ≥ n, this permutation should be counted. In permutation [2,1], p_1>p_2. Because 0<n, this permutation should not be counted.
  
  n=2, there are 12 permutations: [1,2,3,4],[1,2,4,3],[1,3,2,4],[1,3,4,2],[1,4,2,3],[2,1,3,4],[2,3,1,4],[2,3,4,1],[2,4,1,3],[3,1,2,4],[3,4,1,2],[4,1,2,3].
solution: //package codeforces;
  import java.io.BufferedReader;
  import java.io.IOException;
  import java.io.InputStreamReader;
  import java.io.PrintWriter;
  import java.util.*;
  public class codeforces{ 
  	public static void main(String[] args){
      	FastScanner s=new FastScanner();
      	PrintWriter out=new PrintWriter(System.out);
      	int t=s.nextInt();
      	for(int tt=0;tt<t;tt++) {
      		long n=s.nextLong();
      		long ans=1;
      		for(long i=3;i<=2*n;i++) {
      			ans*=i;
      			ans%=1000000007;
      		}
      		out.println(ans);
      	}
      	out.close();
  	}
  	static boolean isPrime(int n){
          if (n <= 1)
              return false;
          else if (n == 2)
              return true;
          else if (n % 2 == 0)
              return false;
          for (int i = 3; i <= Math.sqrt(n); i += 2){
              if (n % i == 0)
                  return false;
          }
          return true;
      }
  	public static void printb(boolean ans) {
  		if(ans) {
  			System.out.println("Yes");
  		}else {
  			System.out.println("No");
  		}
  	}
  	static class DisjointSet {
  		int parent[],rank[];
  		public DisjointSet(int n) {
  			parent=new int[n];
  			rank=new int[n];
  			for(int i=0;i<n;i++) {
  				parent[i]=i;rank[i]=0;
  			}
  		}
  		public int find(int i) {
  			if(parent[i]==i) {
  				return i;
  			}
  			return parent[i]=find(parent[i]);
  		}
  		public void union(int a, int b) {
  			int x=find(a);
  			int y=find(b);
  			if(x==y) {
  				return;
  			}
  			if(rank[x]<rank[y]) {
  				parent[x]=y;
  			}else if(rank[y]<rank[x]) {
  				parent[y]=x;
  			}else {
  				parent[y]=x;
  				rank[x]++;
  			}
  		}
  	}
      static void sort(long [] a) {
  		ArrayList<Long> l=new ArrayList<>();
  		for (long i:a) l.add(i);
  		Collections.sort(l);
  		for (int i=0; i<a.length; i++) a[i]=l.get(i);
  	}
      static void sort(int [] a) {
  		ArrayList<Integer> l=new ArrayList<>();
  		for (int i:a) l.add(i);
  		Collections.sort(l);
  		for (int i=0; i<a.length; i++) a[i]=l.get(i);
  	}
      static int gcd(int a, int b){
        if (b == 0)
          return a;
        return gcd(b, a % b);
      }
      static void sortcol(int a[][],int c) {
  		Arrays.sort(a, (x, y) -> {
  			if(x[c]>y[c]) {
  				return 1;
  			}else {
  				return -1;
  			}
  		});
  	}
      static class FastScanner {
  		BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
  		StringTokenizer st=new StringTokenizer("");
  		String next() {
  			while (!st.hasMoreTokens())
  				try {
  					st=new StringTokenizer(br.readLine());
  				} catch (IOException e) {
  					e.printStackTrace();
  				}
  			return st.nextToken();
  		}
  		double nextDouble() {
  			return Double.parseDouble(next());
  		}
  		int nextInt() {
  			return Integer.parseInt(next());
  		}
  		boolean nextBoolean() {
  			return Boolean.parseBoolean(next());
  		}
  		int[] readArray(int n) {
  			int[] a=new int[n];
  			for (int i=0; i<n; i++) a[i]=nextInt();
  			return a;
  		}
  		long nextLong() {
  			return Long.parseLong(next());
  		}
  		long[] readLongArray(int n) {
  			long[] a=new long[n];
  			for (int i=0; i<n; i++) a[i]=nextLong();
  			return a;
  		}
  	}
      static class Pair implements Comparable<Pair>{
      	int t,fi,si ; 
      	Pair(int a,int b,int c){
      		this.t=a;
      		this.fi=b;
      		this.si=c;
      	}
      	public int compareTo(Pair o) {
      		return t-o.t;
      	}
      }
  }
  