#include <bits/stdc++.h>
using namespace std;
bool sortbysec(pair<int, int> a, pair<int, int> b) {
  if (a.second != b.second)
    return a.second > b.second;
  else
    return a.first < b.first;
}
long long c = 0;
vector<long long> v[100001], ans[100001];
long long vis[100001];
void bfs(long long n) {
  long long h;
  queue<long long> q;
  q.push(n);
  vis[n] = 1;
  ans[c].push_back(n);
  while (!q.empty()) {
    h = q.front();
    q.pop();
    for (auto i = 0; i != v[h].size(); i++) {
      if (!vis[v[h][i]]) {
        q.push(v[h][i]);
        ans[c].push_back(v[h][i]);
        vis[v[h][i]] = 1;
      }
    }
  }
}
int main() {
  long long i, h, w, j, n;
  cin >> n;
  long long a[n];
  map<long long, long long> m;
  for (i = 0; i < n; i++) {
    vis[i + 1] = 0;
    cin >> a[i];
    m[a[i]] = i + 1;
  }
  sort(a, a + n);
  for (i = 0; i < n; i++) {
    v[i + 1].push_back(m[a[i]]);
    v[m[a[i]]].push_back(i + 1);
  }
  for (i = 1; i <= n; i++) {
    if (!vis[i]) {
      bfs(i);
      c++;
    }
  }
  cout << c << "\n";
  for (i = 0; i < c; i++) {
    cout << ans[i].size() << " ";
    for (j = 0; j < ans[i].size(); j++) {
      cout << ans[i][j] << " ";
    }
    cout << "\n";
  }
}
