#include <bits/stdc++.h>
using namespace std;
void sieve(vector<bool>& prime_no, long long N) {
  prime_no[0] = false;
  prime_no[1] = false;
  for (long long i = 2; i * i <= N; i++) {
    if (prime_no[i]) {
      for (long long p = i * i; p <= N; p += i) {
        prime_no[p] = false;
      }
    }
  }
  return;
}
bool perfect_square(long long num) {
  long double sr = sqrt(num);
  return (sr - floor(sr) == 0);
}
long long sum(vector<long long> v) {
  long long s = 0;
  for (long long i = 0; i < v.size(); i++) {
    s += v[i];
  }
  return s;
}
long long hcf(long long a, long long b) {
  if (b == 0) return a;
  return hcf(b, a % b);
}
long long lcm(long long a, long long b) {
  long long ans = a * b;
  long long g = hcf(a, b);
  return ans / g;
}
void input(vector<long long>& v, long long n) {
  for (long long i = 0; i < n; i++) {
    cin >> v[i];
  }
  return;
}
void output(vector<long long> v, long long n) {
  for (long long i = 0; i < n; i++) {
    cout << v[i] << " ";
  }
  return;
}
int main() {
  ios_base::sync_with_stdio(false);
  cin.tie(NULL);
  long long t = 1;
  while (t--) {
    long long n;
    cin >> n;
    vector<long long> v(n);
    input(v, n);
    vector<pair<long long, long long> > p;
    set<long long> s;
    for (long long i = 0; i < n; i++) {
      p.push_back({v[i], i});
      s.insert(i);
    }
    sort(p.begin(), p.end());
    if (p[0].first == 0) {
      cout << "0";
      return 0;
    }
    long long k = INT_MAX;
    for (long long i = 0; i < n; i++) {
      long long left = -1, right = -1;
      if (*s.begin() < p[i].second) {
        left = *s.begin();
      }
      auto it = s.end();
      it--;
      if (*it > p[i].second) {
        right = *it;
      }
      if (left != -1) {
        long long ab = abs(p[i].second - left);
        long long minval = p[i].first;
        if (minval != 0) {
          long long val = floor((minval * 1.0) / ab);
          k = min(val, k);
        }
      }
      if (right != -1) {
        long long ab = abs(p[i].second - right);
        long long minval = p[i].first;
        if (minval != 0) {
          long long val = floor((minval * 1.0) / ab);
          k = min(val, k);
        }
      }
      auto it1 = s.find(p[i].second);
      s.erase(it1);
    }
    cout << k << endl;
  }
  return 0;
}
