Codeforces Round 397 by Kaspersky Lab and Barcelona Bootcamp (Div. 1 + Div. 2 combined)
D
Artsem and Saunders
Codeforces
1700
原题
← CE →
翻译中…

Artsem has a friend Saunders from University of Chicago. Saunders presented him with the following problem.

翻译中…

Let $[*n*]$ denote the set ${1, ..., *n*}$. We will also write $*f*: [*x*] → [*y*]$ when a function $*f*$ is defined in integer points $1$, ..., $*x*$, and all its values are integers from 1 to $*y*$.

翻译中…

Now then, you are given a function $*f*: [*n*] → [*n*]$. Your task is to find a positive integer $*m*$, and two functions $*g*: [*n*] → [*m*]$, $*h*: [*m*] → [*n*]$, such that $*g*(*h*(*x*)) = *x*$ for all image, and $*h*(*g*(*x*)) = *f*(*x*)$ for all image, or determine that finding these is impossible.

翻译中…

Input

翻译中…

The first line contains an integer $*n*$ ($1 ≤ *n* ≤ 10^{5}$).

翻译中…

The second line contains $*n*$ space-separated integers — values $*f*(1), ..., *f*(*n*)$ ($1 ≤ *f*(*i*) ≤ *n*$).

翻译中…

Output

翻译中…

If there is no answer, print one integer -1.

翻译中…

Otherwise, on the first line print the number $*m*$ ($1 ≤ *m* ≤ 10^{6}$). On the second line print $*n*$ numbers $*g*(1), ..., *g*(*n*)$. On the third line print $*m*$ numbers $*h*(1), ..., *h*(*m*)$.

翻译中…

If there are several correct answers, you may output any of them. It is guaranteed that if a valid answer exists, then there is an answer satisfying the above restrictions.

翻译中…

样例

Input #1
3
1 2 3
Output #1
3
1 2 3
1 2 3
InputCopy OutputCopy
Input #2
3
2 2 2
Output #2
1
1 1 1
2
InputCopy OutputCopy
Input #3
2
2 1
Output #3
-1
InputCopy OutputCopy
题目信息
标签
构造
并查集
数学

题面与样例版权归 Codeforces 及出题人所有;中文翻译由 AI 生成(CI 管线),如有出入请以原文为准。