https://www.acmicpc.net/problem/2668
#include <iostream>
#include <vector>
#include <algorithm>
#include <queue>
#include <limits.h>
#include <string>
#include <stack>
#include <list>
#include <unordered_set>
#include <sstream>
#include <deque>
#include <math.h>
#include <map>
#include <set>
using namespace std;
int N;
int arr[101];
int visited[101];
int answer = 0;
int a_vec[101];
void dfs(int start, int depth){
if(visited[start]){
if(start == depth){
a_vec[answer++] = depth;
}
}
else{
visited[start] = 1;
dfs(arr[start], depth);
}
}
void Solution()
{
for(int i =1; i<=N; i++){
for(int j =1; j<=N; j++){
visited[j] =0;
}
dfs(i, i);
}
cout << answer << '\n';
for(int i = 0 ; i<answer; i++){
cout << a_vec[i] << '\n';
}
}
void Input()
{
cin >> N;
for (int i = 1; i <= N; i++)
{
cin >> arr[i];
}
}
int main()
{
ios::sync_with_stdio(false);
cin.tie(NULL);
cout.tie(NULL);
Input();
Solution();
}