Cho một dãy số ~a_1, a_2, \cdots, a_n~ gồm ~n~ số nguyên dương không lớn hơn ~n~. Xét một số nguyên dương ~x~ bất kì có giá trị từ ~1~ đến ~n~, ta thực hiện phép gán ~x = a_x~ và lặp lại phép gán cho đến khi giá trị của ~x~ sau khi gán không thay đổi thì quá trình được dừng lại.
Ví dụ, nếu dãy ~a~ là ~[1, 4, 2, 1]~ và ~x = 3~ thì:
Ở bước đầu tiên, với ~x = 3~ thì ~a_3 = 2~ nên ta gán ~x = 2~.
Ở bước thứ hai, với ~x = 2~ thì ~a_2 = 4~ nên ta gán ~x = 4~.
Ở bước thứ ba, với ~x = 4~ thì ~a_4 = 1~ nên ta gán ~x = 1~.
Ở bước thứ tư, với ~x = 1~ thì ~a_1 = 1~ nên ta gán ~x = 1~.
Do giá trị ~x~ không đổi sau bước thứ tư nên quá trình biến đổi được dừng lại.
Cho ~q~ truy vấn, mỗi truy vấn yêu cầu: cho một số ~x~ ban đầu, hãy in ra số phép biến đổi được thực hiện (trong trường hợp số phép biến đổi là vô hạn thì in ra ~−1~).
Input
Dòng đầu tiên gồm một số nguyên dương ~n~ là độ dài của dãy số ~(3 \leq n \leq 2\cdot10^5)~.
Dòng thứ hai gồm ~n~ số nguyên dương không lớn hơn ~n~ là các số ~a_1, a_2, \cdots, a_n~.
Dòng thứ ba gồm một số nguyên dương ~q~ là số truy vấn ~(1 \leq q \leq 2\cdot10^5)~.
Dòng thứ tư gồm ~q~ số nguyên dương không lớn hơn ~n~, tương ứng với ~q~ truy vấn.
Output
In ra ~1~ dòng gồm ~q~ số nguyên dương là đáp án tương ứng của ~q~ truy vấn.
Simple Input
6
3 2 4 1 6 6
2
1 5
Simple Output
-1 2
Giải thích
Với query số ~1~, quá trình biến đổi là: ~1 \to 3 \to 4 \to 1 \to \cdots~
Với query số ~2~, quá trình biến đổi là: ~5 \to 6 \to 6 \to \cdots~
Comments