#include <bits/stdc++.h>
using namespace std;
const double eps = 1e-10;
const int oo = ~0u >> 2, mo = (int)1e9 + 7;
const int mn = 110000;
int a[mn], w[mn];
int n, m;
vector<vector<int> > Now;
vector<vector<pair<int, int> > > Ans;
pair<int, int> c[mn];
void work(int st) {
  Now.push_back(vector<int>());
  for (int x = st; w[x]; x = a[x]) Now.back().push_back(x), w[x] = 0;
}
int calc(int x) { return (x - 2) % 4 + 2; }
void add(vector<int> Q) {
  int r = 0, len = ((int)(Q).size()) - 1;
  while (r < len) {
    if (Ans.empty() || ((int)(Ans.back()).size()) >= 4)
      Ans.push_back(vector<pair<int, int> >());
    int R = min(r + (4 - ((int)(Ans.back()).size())), len), t = w[Q[0]];
    Ans.back().push_back(make_pair(w[Q[0]], w[Q[r + 1]])),
        w[Q[0]] = w[Q[r + 1]];
    for (int i = r + 1; i <= R - 1; ++i)
      Ans.back().push_back(make_pair(w[Q[i]], w[Q[i + 1]])),
          w[Q[i]] = w[Q[i + 1]];
    Ans.back().push_back(make_pair(w[Q[R]], t)), w[Q[R]] = t;
    swap(Q[0], Q[R]), r = R;
  }
}
int main() {
  scanf("%d", &n);
  for (int i = 1; i <= n; ++i) scanf("%d", a + i), w[a[i]] = i;
  for (int i = 1; i <= n; ++i)
    if (w[a[i]] && a[i] != i) work(i);
  for (int i = 1; i <= n; ++i) w[a[i]] = i;
  m = 0;
  for (int i = 0; i <= ((int)(Now).size()) - 1; ++i) {
    int t = calc(((int)(Now[i]).size()));
    if (t >= 4) {
      add(Now[i]);
      continue;
    }
    c[m++] = make_pair(t, i);
  }
  sort(c, c + m);
  int l = 0, r = m - 1;
  while (l < r && c[l].first == 2 && c[r].first == 3)
    add(Now[c[l++].second]), add(Now[c[r--].second]);
  while (l <= r) add(Now[c[l++].second]);
  printf("%d\n", ((int)(Ans).size()));
  for (int i = 0; i <= ((int)(Ans).size()) - 1; ++i) {
    int l = ((int)(Ans[i]).size());
    printf("%d\n", l);
    for (int j = 0; j <= l - 1; ++j) {
      printf("%d", Ans[i][j].first);
      if (j == l - 1)
        printf("\n");
      else
        printf(" ");
    }
    for (int j = 0; j <= l - 1; ++j) {
      printf("%d", Ans[i][j].second);
      if (j == l - 1)
        printf("\n");
      else
        printf(" ");
    }
  }
}
