func_code_string: #include <bits/stdc++.h>   using namespace std;   long long mod = 1000000007;   int lca[400100][20];   int len[400100];   long long s[400100][20];   int w[400100];   int main() {     ios::sync_with_stdio(false);     int Q;     cin >> Q;     int cnt = 0;     int last = 0;     len[0] = 1;     for (long long q = 0; q < (long long)(Q); ++q) {       int t, x;       long long y;       cin >> t >> x >> y;       x ^= last;       --x;       y ^= last;       if (t == 1) {         ++cnt;         w[cnt] = y;         for (int i = 20 - 1; i >= 0; --i) {           if (w[lca[x][i]] < y) {             x = lca[x][i];           }         }         if (w[x] < y) {           x = lca[x][0];         }         if (w[x] < y) {           x = cnt;         }         lca[cnt][0] = x;         len[cnt] = len[x] + 1;         s[cnt][0] = y;         for (long long i = 0; i < (long long)(20 - 1); ++i) {           lca[cnt][i + 1] = lca[lca[cnt][i]][i];           s[cnt][i + 1] = s[cnt][i] + s[lca[cnt][i]][i];         }       } else {         last = 0;         int upp = len[x];         for (int i = 20 - 1; i >= 0; --i) {           if (s[x][i] <= y) {             y -= s[x][i];             x = lca[x][i];             last += 1 << i;           }         }         last = min(last, upp);         cout << last << endl;       }     }     return 0;   }   