#241. 整除游走

整除游走

整除游走

nn 个点,编号为 1,2,,n1,2,\ldots,n。第 ii 个点有一个正整数权值 aia_i

对于两个不同的点 iijj,当且仅当 aia_i 能整除 aja_j,并且商 aj/aia_j/a_i 是质数时,存在一条从点 ii 指向点 jj 的有向边。每条边的长度均为 11

请你求出从点 SS 到点 TT 的最短路径长度。如果无法到达,输出 1-1

注意,两个不同点的权值可以相同。若 iji\ne jai=aja_i=a_j,则商为 11,不是质数,因此这两个点之间不会因为权值相同而连边。

输入格式

第一行包含四个整数 n,M,S,Tn,M,S,T,分别表示点数、权值上界、起点编号和终点编号。

第二行包含 nn 个整数 a1,a2,,ana_1,a_2,\ldots,a_n,表示每个点的权值。

输出格式

输出一个整数,表示从点 SS 到点 TT 的最短路径长度;若无法到达,输出 1-1

样例 1

输入

7 60 1 7
2 4 6 12 20 30 60

输出

3

样例 2

输入

2 7 1 2
7 7

输出

-1

样例 3

输入

4 10 3 3
2 3 6 10

输出

0

数据范围

对于所有测试数据,保证:

  • 1n1051\le n\le 10^5
  • 1M1051\le M\le 10^5
  • 1S,Tn1\le S,T\le n
  • 1aiM1\le a_i\le M