样例不过30pts
#include<bits/stdc++.h>
using namespace std;
const int N=1e5+10,mod=998244353;
int n,m,T,cnt,now=1,a[N],t[N],p[N],v[N],c[N],mul[N],sum[N],r[N],vis[N],id[N],b[N];vector<int>g[N];queue<int>q;
int main(){
cin>>n;
for(int i=1;i<=n;i++)cin>>a[i];
cin>>m;
for(int i=1;i<=m;i++){
cin>>t[i];
if(t[i]==1)cin>>p[i]>>v[i],mul[i]=1;
if(t[i]==2)cin>>mul[i];
if(t[i]==3){
cin>>c[i],mul[i]=1;
for(int j=1,x;j<=c[i];j++)cin>>x,g[i].push_back(x),r[x]++;
}
}for(int i=1;i<=m;i++)if(!r[i])q.push(i);
while(!q.empty()){
int x=q.front();q.pop(),id[++cnt]=x;
for(auto i:g[x])if(!(--r[i]))q.push(i);
}for(int i=m;i;i--){
int x=id[i];
for(int y:g[x])mul[x]=1ll*mul[x]*mul[y]%mod;
}cin>>T;
for(int i=1;i<=T;i++)cin>>b[i];
for(int i=T,x;i;i--)x=b[i],sum[x]=(sum[x]+now)%mod,now=1ll*now*mul[x]%mod;
for(int i=1;i<=m;i++){
int x=id[i],now=1;
for(int y:g[x])sum[y]=(sum[y]+1ll*sum[x]*now)%mod,now=1ll*now*mul[y]%mod;
}for(int i=1;i<=n;i++)a[i]=1ll*a[i]*now%mod;
for(int i=1;i<=m;i++)if(t[i]==1)a[p[i]]=(a[p[i]]+1ll*v[i]*sum[i])%mod;
for(int i=1;i<=n;i++)cout<<a[i]<<' ';
return 0;
}