func_code_string: #include <bits/stdc++.h>   using namespace std;   int n;   int node[101], h[101], perm[101], fav[101];   int getP(int c) {     int p = node[c];     if (p < 0) return c;     while (node[p] > 0) p = node[p];     return node[c] = p;   }   void join(int a, int b) {     if (0) printf( join %d %d n , a, b);     int pa = getP(a), pb = getP(b);     if (pa == pb) {       return;     }     if (h[pa] < h[pb]) {       node[pa] = pb;       h[pb] += h[pa];     } else {       node[pb] = pa;       h[pa] += h[pb];     }   }   void getNum() {     int i;     for (i = 0; i <= n; i++) {       node[i] = -1;       h[i] = 1;     }     for (i = 1; i <= n; i++) {       if (i + fav[i] <= n) join(i, i + fav[i]);       if (i - fav[i] > 0) join(i, i - fav[i]);     }     for (i = 1; i <= n; i++)       if (getP(i) != getP(perm[i])) {         if (0) printf( %d != %d n , i, perm[i]);         printf( NO );         return;       }     printf( YES );     return;   }   int main() {     int a, b, c;     scanf( %d , &n);     for (int i = 1; i <= n; i++) {       scanf( %d , &perm[i]);     }     for (int i = 1; i <= n; i++) scanf( %d , &fav[i]);     getNum();     return 0;   }   