Sith(sith)

Sith(sith)

【题目描述】
L 君是一个序列问题爱好者。
L 君获得了一个长度为n 的序列a。作为一个序列问题的爱好者,L 君想通过一些
操作将a 中的所有元素都变为1。具体地说,L 君每次会选择两个在序列中相邻的位置
(记为ai 和aj),然后将其中的一个变为gcd(ai; aj),即它们的最大公约数。
L 君很快就构造出了一组方案,现在她想考考你,最少要用几次操作才能把a 中
的所有元素都变为1。
【输入格式】
从文件sith.in 中读入数据。
第一行一个整数n。
第二行n 个正整数a1; a2; : : : ; an,描述了序列a。
【输出格式】
输出到文件sith.out 中。
如果不存在合法的操作方案,输出􀀀1;否则输出最少的操作次数。
【样例1 输入】
5
2 2 3 4 6
【样例1 输出】
5
【样例2 输入】
4
2 4 6 8
【样例2 输出】
-1
【样例3 输入】
3
2 6 9
【样例3 输出】
4
【子任务】
对于30% 的数据,n<= 2000;
对于另外20% 的数据,<= n <= 10^5; 1 <= ai <= 10^9。