异或规则:只有同时出现1才结果为1,其他的全为0。
即:1&1=1 1&0=0 0&0=0
i=1nj=1nAi\prod_{i=1}^n\prod_{j=1}^nA_i&AjA_j
式中AiA_i&AjA_j的结果是Amin(i,j)A_{min(i,j)}
所以我们根据二进制的规则进行暴力乘法即可
AC代码

#include <bits/stdc++.h>
using namespace std;
const long long mod = 998244353;
inline void IOS()
{
    ios::sync_with_stdio(false);
    cin.tie(0), cout.tie(0);
}
void dilingtian()
{
    long long n;
    cin >> n;
    long long ans = 1;
    for (int i = 1; i <= n; i++)
        for (int j = 1; j <= n; j++)
        {
            int minn = min(i, j);
            long long p = 1, sum = 0;
            while (minn--)
            {
                sum = (sum % mod + p % mod) % mod;
                p = p * 2 % mod;
            }
            ans = ans * sum % mod;
        }
    cout << ans << endl;
}
int main(void)
{
    IOS();
    int t;
    cin >> t;
    while (t--)
        dilingtian();
    return 0;
}