#include <algorithm>
#include <cstdint>
#include <iostream>
#include <limits>
int main() {
using namespace std;
int n;
cin >> n;
auto arr = new int64_t[n];
for(int i = 0; i < n; i++)
cin >> arr[i];
auto line = new pair<int64_t, int64_t>[n];
auto add = [&] (int from, int to) {
line[to].first -= line[from].first;
line[to].second -= line[from].second;
};
for(int i = n; i > 0; i--)
{
line[i - 1] = {1, -arr[i - 1]};
for(int j = 2 * i; j <= n; j += i)
add(j - 1, i - 1);
}
int64_t vmin = *max_element(arr, arr + n),
vmax = numeric_limits<int64_t>::max();
for(int i = 0; i < n; i++)
{
if(line[i].first > 0)
vmin = max(vmin, (-line[i].second +
line[i].first - 1) / line[i].first);
else if(line[i].first < 0)
vmax = min(vmax, -line[i].second / line[i].first);
else if(line[i].second < 0)
{
cout << -1 << endl;
goto END;
}
}
if(vmin > vmax)
cout << -1 << endl;
else
cout << vmin - arr[0] << endl;
END:
delete[] line;
delete[] arr;
return 0;
}