#include <bits/stdc++.h>
using namespace std;
struct value_t {
  int value;
  int position;
  value_t() : value(0), position(0){};
};
int main(void) {
  int n;
  cin >> n;
  cin.ignore();
  vector<value_t> a;
  for (int i = 0; i < n; ++i) {
    value_t value;
    cin >> value.value;
    value.position = i;
    a.push_back(value);
  }
  sort(a.begin(), a.end(), [](const value_t& lhs, const value_t& rhs) -> bool {
    return lhs.value < rhs.value;
  });
  vector<bool> done(n, false);
  int k = numeric_limits<int>::max();
  int pos_min = 0;
  int pos_max = n - 1;
  for (int i = 0; i < n; ++i) {
    if (a[i].position != pos_min)
      k = min(a[i].value / abs(a[i].position - pos_min), k);
    if (a[i].position != pos_max)
      k = min(a[i].value / abs(a[i].position - pos_max), k);
    done[a[i].position] = true;
    while (done[pos_min] == true && pos_min < pos_max) pos_min++;
    while (done[pos_max] == true && pos_min < pos_max) pos_max--;
  }
  cout << k << endl;
  return 0;
}
