import java.util.Scanner;
import java.util.*;
public class Main{
public static void main(String[] args){
Scanner in = new Scanner(System.in);
int N = in.nextInt();
int[] nums = new int[N];
for(int i =0; i<N; i++){
nums[i] = in.nextInt();
}
long[] res = new long[N];
for(int i = 0; i< N ; i++){
res[i] = calculate(nums[i]);
}
for(int i =0; i< N ;i++){
System.out.println(res[i]);
}
}
//动态规划
public static long calculate(int K){
long[] dp = new long[K+1];
for(int i = 1; i<= K ;i++){
if(i==1) dp[i] = 1;
else if(i == 2) dp[i] = 2;
else if(i == 3) dp[i] = 4;
else{
dp[i] = dp[i-1];
if(i >= 2) dp[i] = dp[i] + dp[i-2];
if(i >= 3) dp[i] = dp[i] + dp[i-3];
dp[i] = dp[i]%10007;//每次都要模 10007 原来只在最后模10007了,就报错。感觉题目叙述也不清晰。
}
}
return dp[K];
}
}