func_code_string: #include <bits/stdc++.h>   using namespace std;   int n, ntot, ieven, rs[6], ord[6 + 1], iord[6 + 1];   vector<int> xs;   inline int imake(int i) { return i > 0 ? ord[i] : -ord[-i]; }   void iextend_even(int p, vector<int> &vi) {     vector<int> vr[2], vg;     vr[1] = vi;     for (int i = (int)vi.size() - 1; i >= 0; i--) vr[0].push_back(-vi[i]);     vr[0][0] = imake(p + 1);     vr[1][0] = imake(p + 1);     vg = vi;     for (int k = 1, l = 0; k < xs[p]; k++, l ^= 1) {       vg[vg.size() - k] = imake(-(p + 1));       vg.insert(vg.end() - k, vr[l].begin(), vr[l].end());     }     vi = vg;   }   void iextend_odd(int p, vector<int> &vi) {     vector<int> vr[2], vg;     vr[1] = vi;     for (int i = (int)vi.size() - 1; i >= 0; i--) vr[0].push_back(-vi[i]);     int vrz = vr[0][0];     vg = vi;     for (int k = 1, m = rs[p] - 1; k < xs[p]; k += 2, m -= 2) {       if (m > 0) {         vr[0][0] = imake(-(p + 1));         vg[vg.size() - k] = imake(p + 1);         vg.insert(vg.end() - k, vr[0].begin(), vr[0].end());         vg.insert(vg.end() - k, imake(p + 1));         vg.insert(vg.end() - k - 1, vr[1].begin(), vr[1].end());         vg.insert(vg.end() - k - 1 - vr[1].size(), imake(-(p + 1)));       } else {         vr[0][0] = vrz;         vg.push_back(imake(p + 1));         vg.insert(vg.end(), vr[0].begin(), vr[0].end());         vg.push_back(imake(p + 1));         vg.insert(vg.end(), vr[1].begin(), vr[1].end());       }     }     vi = vg;   }   vector<int> iinit_even() {     int p = xs[1];     vector<int> vg, vi;     for (int i = 0; i < p - 1; i++) vi.push_back(imake(2));     vi.push_back(imake(1));     for (int i = 0; i < p - 1; i++) vi.push_back(imake(-2));     vi.push_back(imake(-1));     vg = vi;     vi[0] = imake(1);     for (int i = 1, k = 2; i < xs[0] / 2; i++, k += 2) {       vg[vg.size() - k] = imake(-1);       vg.insert(vg.end() - k, vi.begin(), vi.end());     }     return vg;   }   vector<int> iinit_odd() {     int p = (rs[0] - 1) % 2, q = (rs[1] - 1) % 2, pp = xs[0], qq = xs[1], k, kl,         kr, ku, kd;     vector<int> vg, vil, virx, viry, viu, vid;     if (!(p == 1 && q == 1) && (p == 1 || q == 1)) return vg;     for (int i : {-1, -1, 2, 2, 1, -2}) vil.push_back(imake(i));     for (int i : {1, 2, 1, -2, -2, -1}) virx.push_back(imake(i));     for (int i : {1, 1, -2, -2, -1, 2}) viry.push_back(imake(i));     viu.resize(pp * 2);     vid.resize(pp * 2);     viu[0] = imake(2), viu[1] = imake(2), viu[pp + 1] = imake(-2);     vid[0] = imake(-2), vid[1] = imake(-2), vid[pp + 1] = imake(2);     for (int i = 2; i < pp + 1; i++) viu[i] = imake(1), vid[i] = imake(-1);     for (int i = pp + 2; i < pp * 2; i++) viu[i] = imake(-1), vid[i] = imake(1);     if (p == 1 && q == 1) {       for (int i : {1, -2, -1, -1, 2, 2, 1, 1}) vg.push_back(imake(i));       p++, q++, kl = 4, kr = 1, ku = 6, kd = 2;     } else if (rs[0] == 1 && rs[1] == 1) {       for (int i : {2, 2, 1, 1, -2, -2, -1, 2}) vg.push_back(imake(i));       p = q = 2, kl = 0, kr = 4, ku = 2, kd = 6;     } else if (rs[0] == 1 && rs[1] != 1) {       for (int i : {1, 1, -2, -2, -1, -1, 2, 1}) vg.push_back(imake(i));       p = q = 2, kl = 6, kr = 2, ku = 0, kd = 4;     } else if (rs[0] != 1 && rs[1] != 1) {       for (int i : {-2, -2, -1, -1, 2, 2, 1, -2}) vg.push_back(imake(i));       p = q = 2, kl = 4, kr = 0, ku = 6, kd = 2;     } else if (rs[0] != 1 && rs[1] == 1) {       for (int i : {-1, -1, 2, 2, 1, 1, -2, -1}) vg.push_back(imake(i));       p = q = 2, kl = 2, kr = 6, ku = 4, kd = 0;     }     if (p < rs[0] - 1 && ku == 0) ku = 8;     if (rs[0] - 1 < pp - 1 && kd == 0) kd = 8;     for (k = p; k < rs[0] - 1; k += 2, kl += 2) {       vg[kl] = imake(1);       vg.insert(vg.begin() + kl, vil.begin(), vil.end());       ku += 2;       kr > kl && (kr += 6);       kd > kl && (kd += 6);     }     if (kr == 1) {       for (; k < pp - 1; k += 2, kr += 4) {         vg[kr] = imake(-1);         vg.insert(vg.begin() + kr, virx.begin(), virx.end());         ku > kr && (ku += 6);         kd += 4;       }     } else {       for (; k < pp - 1; k += 2, kr += 2) {         vg[kr] = imake(-1);         vg.insert(vg.begin() + kr, viry.begin(), viry.end());         ku > kr && (ku += 6);         kd += 2;       }     }     for (k = q; k < rs[1] - 1; k += 2, kd += 2) {       vg[kd] = imake(2);       vg.insert(vg.begin() + kd, vid.begin(), vid.end());       ku > kd && (ku += vid.size());     }     for (; k < qq - 1; k += 2, ku += 2) {       vg[ku] = imake(-2);       vg.insert(vg.begin() + ku, viu.begin(), viu.end());     }     return vg;   }   inline void iapply(int *px, int op) {     op < 0 ? px[iord[-op] - 1]-- : px[iord[op] - 1]++;   }   bool iequal(int *px, int *py) {     for (int i = 0; i < n; i++)       if (px[i] != py[i]) return false;     return true;   }   void icycle(vector<int> &vi) {     int px[n], k;     for (int i = 1; i <= n; i++) iord[ord[i]] = i;     for (int i = 0; i < n; i++) px[i] = 1;     for (k = 0; k < (int)vi.size(); k++) {       if (iequal(px, rs)) break;       iapply(px, vi[k]);     }     if (k != 0) {       vi.insert(vi.end(), vi.begin(), vi.begin() + k);       vi.erase(vi.begin(), vi.begin() + k);     }   }   void iprint(vector<int> &vi) {     for (auto i : vi)       i > 0 ? (cout <<  inc   << i << endl) : (cout <<  dec   << -i << endl);   }   int main() {     ios_base::sync_with_stdio(0);     cin.tie(0);     cin >> n;     ntot = 1;     xs.resize(n);     for (int i = 0; i < n; i++) cin >> xs[i], ntot *= xs[i];     for (int i = 0; i < n; i++) cin >> rs[i];     if (n == 1) {       if (xs[0] == 2 && rs[0] == 1) {         cout <<  Cycle  << endl;         cout <<  inc 1  << endl;         cout <<  dec 1  << endl;       } else if (xs[0] == 2 && rs[0] == 2) {         cout <<  Cycle  << endl;         cout <<  dec 1  << endl;         cout <<  inc 1  << endl;       } else if (rs[0] == 1) {         cout <<  Path  << endl;         for (int i = 1; i < xs[0]; i++) cout <<  inc 1  << endl;       } else if (rs[0] == xs[0]) {         cout <<  Path  << endl;         for (int i = 1; i < xs[0]; i++) cout <<  dec 1  << endl;       } else         cout <<  No  << endl;     } else {       for (int i = 1; i <= n; i++) ord[i] = i;       for (int i = 0; i < n; i++)         if (xs[i] % 2 == 0) {           swap(xs[0], xs[i]);           swap(rs[0], rs[i]);           swap(ord[1], ord[i + 1]);           break;         }       vector<int> vi;       if (xs[0] % 2 == 0) {         cout <<  Cycle  << endl;         vi = iinit_even();         for (int p = 2; p < n; p++) iextend_even(p, vi);         if (xs[ieven] % 2 == 0) icycle(vi);       } else {         for (int i = 1; i < n; i++)           if (rs[i] % 2 == 0) {             if (rs[0] % 2 != 0) {               swap(xs[0], xs[i]);               swap(rs[0], rs[i]);               swap(ord[1], ord[i + 1]);             } else if (rs[1] % 2 != 0) {               swap(xs[1], xs[i]);               swap(rs[1], rs[i]);               swap(ord[2], ord[i + 1]);             } else               break;           }         bool ok = true;         for (int i = 2; i < n; i++)           if (rs[i] % 2 == 0) ok = false;         vi = iinit_odd();         if (vi.size() == 0 || !ok) {           cout <<  No  << endl;           vi.clear();         } else {           cout <<  Path  << endl;           for (int p = 2; p < n; p++) iextend_odd(p, vi);         }       }       iprint(vi);     }     return 0;   }   