//satyaki3794 #include #define ff first #define ss second #define pb push_back #define LEFT(n) (2*(n)) #define RIGHT(n) (2*(n)+1) using namespace std; typedef long long ll; typedef pair ii; typedef pair iii; ll pwr(ll base, ll p, ll mod){ ll ans = 1;while(p){if(p&1)ans=(ans*base)%mod;base=(base*base)%mod;p/=2;}return ans; } ll gcd(ll a, ll b){ if(b == 0) return a; return gcd(b, a%b); } const int LG = 19; const int maxn = (1<>1],invW[maxn>>1]; void precompute_powers(){ W[0] = invW[0] = 1; int base = pwr(G, (MOD-1)/maxn, MOD); int inv_base = pwr(base, MOD-2, MOD); for(int i = 1;i &a, bool invert) { int n = (int) a.size(); for (int i=1, j=0; i> 1; for (; j>=bit; bit>>=1) j -= bit; j += bit; if (i < j) swap (a[i], a[j]); } for (int len=2; len<=n; len<<=1) { for (int i=0; i A(n, 0), B(n, 0); for(int i=l1;i<=r1;i++) A[i-l1] = ans[i]; for(int i=l2;i<=r2;i++) B[i-l2] = total_trees[i]; ntt(A, false); ntt(B, false); for(int i=0;i0 && i%p==0 && p<=limit;p*=2) convolve(i-p, i-1, p, min(2*p-1, limit)); } int t; cin>>t; assert(t >= 1 && t <= 100000); while(t--){ int n; cin>>n; assert(n >= 1 && n <= 100000); cout<