import math
m=int(input())
for _ in range(m):
    n=int(input())
    if n<4:
        print(n) # 小于4层时直接输出
    else:
        l=[1,2] # n以内2的整数次幂,初始化2个,随后续动态规划而添加
        dp=[1]*n
        dp[1],dp[2]=2,3
        for i in range(3,n):
            a=0
            for j in l:
                a+=dp[i-j] # 最后一步爬j层时,剩余层数的方法数
            if math.log(i+1,2)%1==0: # 通过对数、模判断i+1是否为2的整数次幂
                dp[i]=a+1 # 2的整数次幂,可一步爬出,所以+1
                l.append(i+1) # 将i+1加入到2的整数次幂列表中
            else:
                dp[i]=a
        print(dp[n-1]%(10**9+3))