CF891A Pride

题目描述

## 问题描述 你有一个长度为 $n$ 的数列 $a$,你能执行一些操作。每个操作是这样的:选择两个相邻的数 $x$ 和 $y$,把它们中的一个换为 $\gcd(x,y)$。这里的 $\gcd$ 代表[最大公约数](en.wikipedia.org/wiki/Greatest_common_divisor)。 问你把数列中的数全变成 $1$ 的最小操作次数。

输入格式

第一行是一个整数 $n$($1 \leq n \leq 2000$)——数列中数的个数。 第二行包含 $n$ 个分开的整数 $a_1,a_2,\ldots,a_n$($1 \leq a_i \leq 10^9$)——这个数列。

输出格式

如果不可能全变成 $1$,输出 $-1$。否则,输出把数列中的数全变成 $1$ 的最小操作次数。

说明/提示

在第一个例子中你可以把数都变成 $1$ 通过这 $5$ 步: - $[2,2,3,4,6]$ - $[2,1,3,4,6]$ - $[2,1,3,1,6]$ - $[2,1,1,1,6]$ - $[1,1,1,1,6]$ - $[1,1,1,1,1]$ 可以证明在这个例子中不可能用 $5$ 步以下来把所有的数都变成 $1$。