CF765D.Artsem and Saunders

普及/提高-

通过率:0%

AC君温馨提醒

该题目为【codeforces】题库的题目,您提交的代码将被提交至codeforces进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。

题目描述

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

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

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

输入格式

The first line contains an integer nn ( 1<=n<=1051<=n<=10^{5} ).

The second line contains nn space-separated integers — values f(1),...,f(n)f(1),...,f(n) ( 1<=f(i)<=n1<=f(i)<=n ).

输出格式

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

Otherwise, on the first line print the number mm ( 1<=m<=1061<=m<=10^{6} ). On the second line print nn numbers g(1),...,g(n)g(1),...,g(n) . On the third line print mm numbers h(1),...,h(m)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.

输入输出样例

  • 输入#1

    3
    1 2 3
    

    输出#1

    3
    1 2 3
    1 2 3
    
  • 输入#2

    3
    2 2 2
    

    输出#2

    1
    1 1 1
    2
    
  • 输入#3

    2
    2 1
    

    输出#3

    -1
    
首页