import java.util.Scanner;

/**
 * @author supermejane
 * @date 2025/10/6
 * @description BGN61 斐波那契字符串
 */
public class Main {

    public static int[][] cache = new int[100005][3];
    public static boolean[] visit = new boolean[100005];

    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        int n = in.nextInt();
        while (n-- > 0) {
            int k = in.nextInt();
            int[] a = new int[3];
            dfs(k, a);
            System.out.println(a[2]);
        }
    }
    //a[0] 0的数量, a[1] 1的数量, a[2] 逆序对数量
    public static void dfs(int n, int[] a) {
        if (n == 1) {
            a[0] = 1;
            a[1] = 0;
            a[2] = 0;
        } else if (n == 2) {
            a[0] = 0;
            a[1] = 1;
            a[2] = 0;
        } else if (n > 2) {
            if (visit[n]) {
                System.arraycopy(cache[n], 0, a, 0, 3);
                return;
            }
            dfs(n - 1, a);
            int[] b = new int[3];
            //System.arraycopy(a, 0, b, 0, 3);
            dfs(n - 2, b);

            int base = (int)1e9 + 7;
            a[2] = (int) ((a[2] + b[2] + (long) a[0] * b[1]) % base);
            a[0] = (a[0] + b[0]) % base;
            a[1] = (a[1] + b[1]) % base;
            System.arraycopy(a, 0, cache[n], 0, 3);
            visit[n] = true;
        }
    }
}
//1. 清楚递归流程 
//2. 然后需要对递归使用记忆化搜索进行优化, 从o(2 ^ n)变为o(n),注意这是一个后续遍历
//3. 注意精度 
//4. 参数使用引用注意int[] b = new int[3]; 也可以使用public static int[] dfs(int n)