func_code_string: #include <bits/stdc++.h>   using namespace std;   const long long INF = 1LL << 61;   int n, r;   long long a[30], b[30], k[30], p[30];   long long dfs(int u, bool op1) {     long long res = -INF;     if (u % 2 == 0) res = max(res, inner_product(a, a + n, k, 0LL));     if (u == 0) return res;     if (!op1) {       for (int i = 0; i < (n); i++) a[i] ^= b[i];       res = max(res, dfs(u - 1, true));       for (int i = 0; i < (n); i++) a[i] ^= b[i];     }     long long tmp[30];     memcpy(tmp, a, sizeof a);     for (int i = 0; i < (n); i++) a[i] = tmp[p[i]] + r;     res = max(res, dfs(u - 1, false));     memcpy(a, tmp, sizeof a);     return res;   }   int main() {     int u;     scanf( %d%d%d , &n, &u, &r);     for (int i = 0; i < (n); i++) scanf( %I64d , a + i);     for (int i = 0; i < (n); i++) scanf( %I64d , b + i);     for (int i = 0; i < (n); i++) scanf( %I64d , k + i);     for (int i = 0; i < (n); i++) scanf( %I64d , p + i), p[i]--;     printf( %I64d n , dfs(u, false));     return 0;   }   