#include <bits/stdc++.h>
using namespace std;
const int N = 100100;
int n, m = 0, len = 0, ans = 0;
int a[N], b[N], c[N], h[N], t[N];
int B2 = 0, B3 = 0, A2[N], A3[N];
int A[N][5], B[N][5], C[N];
bool u[N];
void init() {
  scanf("%d", &n);
  for (int i = 1; i <= n; ++i) scanf("%d", &a[i]), b[a[i]] = i;
  for (int i = 1; i <= n; ++i)
    if (!u[a[i]]) {
      u[a[i]] = 1;
      int p = 0;
      for (int now = a[a[i]]; !u[now]; now = a[now]) u[now] = 1, ++p;
      if (p > 0) {
        h[++m] = (++len);
        c[len] = i;
        for (int now = a[a[i]]; now != a[i]; now = a[now]) c[++len] = b[now];
        t[m] = len;
      }
    }
}
void work(const int x) {
  while (t[x] >= h[x] + 4) {
    C[++ans] = 5;
    for (int i = 0; i < 5; ++i) A[ans][i] = c[h[x] + i];
    for (int i = 1; i <= 4; ++i) B[ans][i - 1] = c[h[x] + i];
    B[ans][4] = c[h[x]];
    c[h[x] + 4] = c[h[x]];
    h[x] += 4;
  }
  if (t[x] == h[x] + 3) {
    C[++ans] = 4;
    for (int i = 0; i < 4; ++i) A[ans][i] = c[h[x] + i];
    for (int i = 1; i <= 3; ++i) B[ans][i - 1] = c[h[x] + i];
    B[ans][3] = c[h[x]];
    c[h[x] + 3] = c[h[x]];
    h[x] += 3;
  } else if (t[x] == h[x] + 2)
    A3[++B3] = x;
  else if (t[x] == h[x] + 1)
    A2[++B2] = x;
}
void Gans() {
  int x, y;
  while (B3 > B2) {
    y = h[A3[B3--]];
    if (B3 == 0) {
      C[++ans] = 3;
      A[ans][0] = c[y], A[ans][1] = c[y + 1], A[ans][2] = c[y + 2];
      B[ans][0] = c[y + 1], B[ans][1] = c[y + 2], B[ans][2] = c[y];
    } else {
      x = h[A3[B3--]];
      C[++ans] = 5;
      A[ans][0] = c[x];
      A[ans][1] = c[x + 1];
      A[ans][2] = c[y];
      A[ans][3] = c[y + 1];
      A[ans][4] = c[y + 2];
      B[ans][0] = c[x + 1];
      B[ans][1] = c[x];
      B[ans][2] = c[y + 1];
      B[ans][3] = c[y + 2];
      B[ans][4] = c[y];
      c[x + 1] = c[x];
      h[A3[B3 + 1]] = x + 1;
      A2[++B2] = A3[B3 + 1];
    }
  }
  while (B2 > 0 && B3 > 0) {
    C[++ans] = 5;
    x = h[A2[B2--]], y = h[A3[B3--]];
    A[ans][0] = c[x];
    A[ans][1] = c[x + 1];
    A[ans][2] = c[y];
    A[ans][3] = c[y + 1];
    A[ans][4] = c[y + 2];
    B[ans][0] = c[x + 1];
    B[ans][1] = c[x];
    B[ans][2] = c[y + 1];
    B[ans][3] = c[y + 2];
    B[ans][4] = c[y];
  }
  while (B2 > 0) {
    x = h[A2[B2--]];
    if (B2 > 0) {
      C[++ans] = 4;
      y = h[A2[B2--]];
      A[ans][0] = c[x];
      A[ans][1] = c[x + 1];
      A[ans][2] = c[y];
      A[ans][3] = c[y + 1];
      B[ans][0] = c[x + 1];
      B[ans][1] = c[x];
      B[ans][2] = c[y + 1];
      B[ans][3] = c[y];
    } else {
      C[++ans] = 2;
      A[ans][0] = c[x];
      A[ans][1] = c[x + 1];
      B[ans][0] = c[x + 1];
      B[ans][1] = c[x];
    }
  }
}
int main() {
  init();
  for (int i = 1; i <= m; ++i) work(i);
  Gans();
  printf("%d\n", ans);
  for (int i = 1; i <= ans; ++i) {
    printf("%d\n", C[i]);
    printf("%d", A[i][0]);
    for (int j = 1; j < C[i]; ++j) printf(" %d", A[i][j]);
    puts("");
    printf("%d", B[i][0]);
    for (int j = 1; j < C[i]; ++j) printf(" %d", B[i][j]);
    puts("");
  }
  return 0;
}
