#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const ll N=200009;
ll T,n,tr[N],tr2[N],a[N];
ll LSB(ll x){
return x&(-x);
}
void add(ll u,ll delta){
while(u<N){
tr[u]+=delta;
tr[u]%=998244353;
u+=LSB(u);
}
}
void add2(ll u,ll delta){
while(u<N){
tr2[u]+=delta;
tr2[u]%=998244353;
u+=LSB(u);
}
}
ll query(ll u){
ll ans=0;
while(u){
ans+=tr[u];
ans%=998244353;
u-=LSB(u);
}
return ans;
}
ll query2(ll u){
ll ans=0;
while(u){
ans+=tr2[u];
ans%=998244353;
u-=LSB(u);
}
return ans;
}
ll qpow(ll a,ll b,ll mod){
ll ans=1;
while(b){
if(b&1) ans=(ans*a)%mod;
a=(a*a)%mod;
b/=2;
}
return ans;
}
int main(){
cin>>n;
for(ll i=1;i<=n;i++){
cin>>a[i];
}
ll ans=0;
for(ll i=1;i<=n;i++){
ans+=a[i];
ans+=(query(200000)-query(a[i]))*2;
ans%=998244353;
ans+=query2(a[i]+1)*a[i]*2;
ans%=998244353;
cout<<ans%998244353*qpow(i*i,998244351,998244353)%998244353<<endl;
add(a[i],a[i]);
add2(a[i],1);
}
return 0;
}