There is a well-known theorem that any permutation can be decomposed into a set of cycles. Your job is to write the shortest possible program to do so.
Input:
Two lines. The first contains a number N
, the second contains N
distinct integers in the range [0,N-1]
separated by spaces. These integers represent a permutation of N
elements.
Output:
One line for each cycle in the permutation. Each line should be a space-separated list of integers in cycle order.
Cycles can be output in any order, and each cycle can be output starting at any position.
Example 1:
8
2 3 4 5 6 7 0 1
This input encodes the permutation 0->2, 1->3, 2->4, 3->5, 4->6, 5->7, 6->0, 7->1. This decomposes into cycles like this:
0 2 4 6
1 3 5 7
An equally valid output would be
5 7 1 3
2 4 6 0
Example 2:
8
0 1 3 4 5 6 7 2
valid output:
0
1
4 5 6 7 2 3
>C.
\$\endgroup\$