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))

京公网安备 11010502036488号