#include #include using mint = atcoder::static_modint<998244353>; //using mint = atcoder::static_modint<1000000007>; using namespace std; using namespace atcoder; using ld = long double; using ll = long long; #define mp(a,b) make_pair(a,b) #define rep(i,s,n) for(int i=s; i dx{1,0,-1,0},dy{0,1,0,-1}; template void compress(vector&a, bool is_unique=false){ auto b=a; sort(b.begin(),b.end()); if(is_unique){ auto p=unique(b.begin(),b.end()); b.erase(p,b.end()); } for(auto&x:a)x=lower_bound(b.begin(),b.end(),x)-b.begin(); } int main(){ int T; cin >> T; vector out; rep(t,0,T){ ll n; cin >> n; if(n==2){ out.push_back(3); continue; } if(n==1){ out.push_back(1); continue; } mint ans=0; mint p=mint(3)/4; mint h=mint(2).inv(); ans=1-p.pow(n-2); ans++; ans*=h; ans*=(n-1); ans++; ans*=mint(2).pow((n-1)*n/2); out.push_back(ans); } for(auto x:out)cout << x.val() << "\n"; }