#include <bits/stdc++.h>
using namespace std;
int n;
int a[6], b[6], ord[6], c[6];
vector<pair<int, int> > v, nv;
struct S {
  vector<pair<int, int> > v;
  int from;
  S(vector<pair<int, int> > v, int from) : v(v), from(from) {}
  S() {}
};
vector<S> s;
void pr(int a, int b) {
  if (a == 1) {
    printf("inc %d\n", ord[b] + 1);
  } else {
    printf("dec %d\n", ord[b] + 1);
  }
}
S hor, ver, res;
bool invI, invJ;
void _incI() {
  assert(ver.from < (int)ver.v.size());
  res.v.push_back(ver.v[ver.from++]);
}
void _decI() {
  assert(ver.from > 0);
  pair<int, int> p = ver.v[--ver.from];
  p.first = -p.first;
  res.v.push_back(p);
}
void _incJ() {
  assert(hor.from < (int)hor.v.size());
  res.v.push_back(hor.v[hor.from++]);
}
void _decJ() {
  assert(hor.from > 0);
  pair<int, int> p = hor.v[--hor.from];
  p.first = -p.first;
  res.v.push_back(p);
}
void decI() {
  if (invI)
    _incI();
  else
    _decI();
}
void incI() {
  if (invI)
    _decI();
  else
    _incI();
}
void decJ() {
  if (invJ)
    _incJ();
  else
    _decJ();
}
void incJ() {
  if (invJ)
    _decJ();
  else
    _incJ();
}
S merge() {
  res.v.clear();
  res.from = 0;
  int i = ver.from;
  int j = hor.from;
  int n = (int)ver.v.size() + 1;
  int m = (int)hor.v.size() + 1;
  assert(i % 2 == j % 2);
  invI = invJ = false;
  if (i % 2 == 1) {
    for (int jj = j; jj >= 0; --jj) {
      if (jj & 1) {
        for (int _ = 0; _ < (int)(i); ++_) decI();
      } else {
        for (int _ = 0; _ < (int)(i); ++_) incI();
      }
      if (jj != 0)
        decJ();
      else
        incI();
    }
    for (int ii = i + 1; ii < n; ++ii) {
      if (ii & 1) {
        for (int _ = 0; _ < (int)(j); ++_) decJ();
      } else {
        for (int _ = 0; _ < (int)(j); ++_) incJ();
      }
      if (ii != n - 1)
        incI();
      else
        incJ();
    }
    for (int jj = j + 1; jj < m; ++jj) {
      if (jj & 1) {
        for (int _ = 0; _ < (int)(n - 1); ++_) incI();
      } else {
        for (int _ = 0; _ < (int)(n - 1); ++_) decI();
      }
      if (jj != m - 1) incJ();
    }
  } else {
    if (i == n - 1) {
      i = 0;
      invI = true;
    }
    if (j == 0) {
      j = m - 1;
      invJ = true;
    }
    for (int _ = 0; _ < (int)(i); ++_) decI();
    decJ();
    for (int ii = 0; ii < (int)(i + 1); ++ii) {
      if (ii & 1) {
        for (int _ = 0; _ < (int)(j - 1); ++_) incJ();
      } else {
        for (int _ = 0; _ < (int)(j - 1); ++_) decJ();
      }
      incI();
    }
    for (int jj = 0; jj < (int)(j + 1); ++jj) {
      if (jj & 1) {
        for (int _ = 0; _ < (int)(n - i - 2); ++_) decI();
      } else {
        for (int _ = 0; _ < (int)(n - i - 2); ++_) incI();
      }
      if (jj != j) incJ();
    }
    if (j != m - 1) {
      incJ();
      for (int jj = j + 1; jj < m; ++jj) {
        if (jj & 1) {
          for (int _ = 0; _ < (int)(n - 1); ++_) decI();
        } else {
          for (int _ = 0; _ < (int)(n - 1); ++_) incI();
        }
        if (jj != m - 1) incJ();
      }
    }
  }
  return res;
}
int main() {
  cin >> n;
  for (int i = 0; i < (int)(n); ++i) cin >> a[i];
  for (int i = 0; i < (int)(n); ++i) cin >> b[i];
  if (n == 1) {
    if (a[0] == 2) {
      cout << "Cycle" << endl;
      if (b[0] == 1) {
        cout << "inc 1" << endl;
        cout << "dec 1" << endl;
      } else {
        cout << "dec 1" << endl;
        cout << "inc 1" << endl;
      }
    } else {
      if (b[0] == 1) {
        cout << "Path" << endl;
        for (int i = 0; i < (int)(a[0] - 1); ++i) {
          cout << "inc 1\n";
        }
      } else if (b[0] == a[0]) {
        cout << "Path" << endl;
        for (int i = 0; i < (int)(a[0] - 1); ++i) {
          cout << "dec 1\n";
        }
      } else {
        cout << "No" << endl;
      }
    }
    return 0;
  }
  for (int i = 0; i < (int)(n); ++i) ord[i] = i;
  for (int i = 0; i < (int)(n - 1); ++i)
    if (a[i] % 2 == 0) {
      swap(a[i], a[n - 1]);
      swap(b[i], b[n - 1]);
      swap(ord[i], ord[n - 1]);
      break;
    }
  if (a[n - 1] % 2 == 0) {
    for (int i = 0; i < (int)(n - 1); ++i) {
      nv.clear();
      for (int j = 0; j < (int)(a[i]); ++j) {
        if (j & 1) {
          reverse(v.begin(), v.end());
          for (pair<int, int> p : v) {
            nv.push_back(make_pair(-p.first, p.second));
          }
          reverse(v.begin(), v.end());
        } else {
          for (pair<int, int> p : v) {
            nv.push_back(p);
          }
        }
        if (j != a[i] - 1) {
          nv.push_back(make_pair(1, i));
        }
      }
      v = nv;
    }
    nv.clear();
    for (pair<int, int> p : v) {
      nv.push_back(p);
    }
    for (int i = 0; i < (int)(a[n - 1] - 1); ++i) {
      nv.push_back(make_pair(1, n - 1));
      if (i & 1) {
        for (int j = 1; j < (int)v.size(); ++j) {
          nv.push_back(v[j]);
        }
      } else {
        for (int j = (int)v.size() - 1; j >= 1; --j) {
          nv.push_back(make_pair(-v[j].first, v[j].second));
        }
      }
    }
    nv.push_back(make_pair(-v[0].first, v[0].second));
    for (int i = 0; i < (int)(a[n - 1] - 1); ++i) {
      nv.push_back(make_pair(-1, n - 1));
    }
    for (int i = 0; i < (int)(n); ++i) c[i] = 1;
    v = nv;
    int ind = 0;
    while (true) {
      bool ok = true;
      for (int j = 0; j < (int)(n); ++j)
        if (c[j] != b[j]) {
          ok = false;
          break;
        }
      if (ok) break;
      c[v[ind].second] += v[ind].first;
      ++ind;
    }
    printf("Cycle\n");
    for (int i = ind; i < (int)v.size(); ++i) {
      pr(v[i].first, v[i].second);
    }
    for (int i = 0; i < ind; ++i) {
      pr(v[i].first, v[i].second);
    }
    return 0;
  }
  int sum = 0;
  for (int i = 0; i < (int)(n); ++i) sum += b[i] - 1;
  if (sum % 2 == 1) {
    cout << "No" << endl;
    return 0;
  }
  cout << "Path" << endl;
  for (int i = 0; i < (int)(n); ++i) {
    vector<pair<int, int> > cur;
    for (int j = 0; j < (int)(a[i] - 1); ++j) {
      cur.push_back(make_pair(1, i));
    }
    s.push_back(S(cur, b[i] - 1));
  }
  while ((int)s.size() > 1) {
    bool done = false;
    for (int i = 0; i < (int)(s.size()); ++i) {
      for (int j = 0; j < (int)(i); ++j) {
        if ((s[i].from + s[j].from) % 2 == 0) {
          hor = s[i];
          ver = s[j];
          s[i] = merge();
          swap(s[j], s.back());
          s.pop_back();
          done = true;
          break;
        }
      }
      if (done) {
        break;
      }
    }
    assert(done);
  }
  for (pair<int, int> p : s[0].v) {
    pr(p.first, p.second);
  }
  return 0;
}
