#include <bits/stdc++.h>
using namespace std;
using ll = long long;
int n, L, q, h[200001];
vector<int> adj[200001];
void dfs(int i, int d, int w, int p) {
    h[i] = (ll) h[i] * w % L;
    if (not d) return;
    for (int j: adj[i]) if (j != p) dfs(j, d - 1, w, i);
}
int main() {
    cin >> n >> L;
    for (int i = n; --i;) {
        int a, b;
        cin >> a >> b;
        adj[a].emplace_back(b);
        adj[b].emplace_back(a);
    }
    for (int i = 1; i <= n; ++i) cin >> h[i];
    cin >> q;
    while (q--) {
        int t, x;
        cin >> t >> x;
        if (t == 1) {
            int d, w;
            cin >> d >> w;
            dfs(x, d, w, 0);
        } else cout << h[x] << endl;
    }
}
| # | Verdict | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict | Execution time | Memory | Grader output | 
|---|
| Fetching results... |