#include <bits/stdc++.h>
using namespace std;
ifstream fin("A.in");
ofstream fout("A.out");
int n, a[200001], v[200001], fron[200001], behind[200001], progr[200001], t;
bool correct(long long x) {
  if (x > 0) return 1;
  return 0;
}
int main() {
  cin >> n;
  for (int i = 1; i <= n; ++i) {
    cin >> a[i];
  }
  int cnt = 0;
  for (int i = 1; i <= n; ++i) {
    if (a[i] == -1) {
      ++cnt;
    } else {
      v[++t] = i;
      behind[i] = cnt;
      cnt = 0;
    }
  }
  for (int i = n; i >= 1; --i) {
    if (a[i] == -1) {
      ++cnt;
    } else {
      fron[i] = cnt;
      cnt = 0;
    }
  }
  if (t == 0) {
    cout << 1;
    return 0;
  }
  cnt = 1;
  for (int i = 1; i <= t; ++i) progr[i] = 2000000000;
  for (int i = 2; i <= t; ++i) {
    if (progr[i - 1] == 2000000000) {
      if ((a[v[i]] - a[v[i - 1]]) % (v[i] - v[i - 1]) == 0) {
        int r = (a[v[i]] - a[v[i - 1]]) / (v[i] - v[i - 1]);
        int ok = 0;
        if (i > 2) {
          if (progr[i - 2] == 2000000000) ok = 1;
          if (!ok) {
            for (int j = v[i - 2]; j < v[i - 1]; ++j) {
              if (correct(a[v[i - 2]] + 1LL * (j - v[i - 2]) * progr[i - 2]) &&
                  correct(a[v[i - 1]] - 1LL * (v[i - 1] - j - 1) * r) > 0) {
                ok = 1;
                break;
              }
            }
          }
        } else
          ok = (correct(a[v[i - 1]] - 1LL * r * behind[v[i - 1]]));
        if (ok) {
          progr[i] = r;
          progr[i - 1] = r;
        } else
          ++cnt;
      } else
        ++cnt;
    } else {
      if ((a[v[i]] - a[v[i - 1]]) % (v[i] - v[i - 1]) == 0) {
        int r = (a[v[i]] - a[v[i - 1]]) / (v[i] - v[i - 1]);
        if (r == progr[i - 1]) {
          progr[i] = r;
        } else
          ++cnt;
      } else
        ++cnt;
    }
  }
  if (progr[t] != 2000000000) {
    if (!correct(a[v[t]] + 1LL * progr[t] * fron[v[t]])) ++cnt;
  }
  int minv = cnt;
  cnt = 1;
  for (int i = 1; i <= t; ++i) progr[i] = 2000000000;
  for (int i = t - 1; i >= 1; --i) {
    if (progr[i + 1] == 2000000000) {
      if ((a[v[i + 1]] - a[v[i]]) % (v[i + 1] - v[i]) == 0) {
        int r = (a[v[i + 1]] - a[v[i]]) / (v[i + 1] - v[i]);
        int ok = 0;
        if (i < t - 1) {
          if (progr[i + 2] == 2000000000) ok = 1;
          if (!ok) {
            for (int j = v[i + 1]; j < v[i + 2]; ++j) {
              if (correct(a[v[i + 1]] + 1LL * (j - v[i + 1]) * r) &&
                  correct(a[v[i + 2]] -
                          1LL * (v[i + 2] - j - 1) * progr[i + 2])) {
                ok = 1;
                break;
              }
            }
          }
        } else
          ok = correct(a[v[i + 1]] + 1LL * r * fron[v[i + 1]]);
        if (ok)
          progr[i] = r, progr[i + 1] = r;
        else
          ++cnt;
      } else
        ++cnt;
    } else {
      if ((a[v[i + 1]] - a[v[i]]) % (v[i + 1] - v[i]) == 0) {
        int r = (a[v[i + 1]] - a[v[i]]) / (v[i + 1] - v[i]);
        if (r == progr[i + 1]) {
          progr[i] = r;
        } else
          progr[i] = 0, ++cnt;
      } else
        progr[i] = 0, ++cnt;
    }
  }
  if (progr[1] != 2000000000) {
    if (!correct(a[v[1]] - 1LL * progr[1] * behind[v[1]])) ++cnt;
  }
  minv = min(cnt, minv);
  cout << minv;
}
