Rendezvous
题号:NC51298
时间限制:C/C++/Rust/Pascal 2秒,其他语言4秒
空间限制:C/C++/Rust/Pascal 128 M,其他语言256 M
64bit IO Format: %lld

题目描述

给定一个n个顶点的有向图,每个顶点有且仅有一条出边。 
对于顶点i,记它的出边为(i, a[i])。 
再给出q组询问,每组询问由两个顶点a、b组成,要求输出满足下面条件的x、y:
  1. 从顶点a沿着出边走x步和从顶点b沿着出边走y步后到达的顶点相同。
  2. 在满足条件1的情况下max(x,y)最小。 
  3. 在满足条件1和2的情况下min(x,y)最小。 
  4. 在满足条件1、2和3的情况下
 如果不存在满足条件1的x、y,输出-1 -1。 

输入描述:

第一行两个正整数n和q 
第二行n个正整数a[1],a[2],...,a[n]
下面q行,每行两个正整数a,b,表示一组询问。

输出描述:

输出q行,每行两个整数。
示例1

输入

复制
12 5
4 3 5 5 1 1 12 12 9 9 7 1
7 2
8 11
1 2
9 10
10 5

输出

复制
2 3
1 2
2 2
0 1
-1 -1