#include <bits/stdc++.h>
using namespace std;
long a[100003];
struct sajal {
  long i, t;
};
vector<long> v[100002];
int b[100003];
queue<sajal> q;
int main() {
  long n;
  cin >> n;
  long h = n / 2;
  h = h + 1;
  for (long i = 0; i < n; i++) {
    cin >> a[i];
    if (a[i] <= h) {
      v[a[i]].push_back(i);
    }
    if (a[i] == 1 || i == 0 || i == n - 1) {
      sajal r;
      r.i = i;
      r.t = 1;
      q.push(r);
      b[i] = 1;
    }
  }
  int p = 0;
  long m = 0;
  while (!q.empty()) {
    sajal h = q.front();
    q.pop();
    p++;
    sajal o;
    if (h.t > m) {
      m = h.t;
      for (long i = 0; i < v[m + 1].size(); i++) {
        long r = v[m + 1][i];
        if (b[r] == 0) {
          b[r] = 1;
          o.i = r;
          o.t = m + 1;
          q.push(o);
        }
      }
    }
    if (h.i - 1 >= 0 && b[h.i - 1] == 0) {
      b[h.i - 1] = 1;
      o.i = h.i - 1;
      o.t = h.t + 1;
      q.push(o);
    }
    if (h.i + 1 < n && b[h.i + 1] == 0) {
      b[h.i + 1] = 1;
      o.i = h.i + 1;
      o.t = h.t + 1;
      q.push(o);
    }
  }
  cout << m << endl;
}
