#include <bits/stdc++.h>
using namespace std;
int n, ps, pe;
long long ds, de, a[200010];
int st;
bool isde() {
  int pt;
  bool F = false;
  if (ps > 0 && st == 1 && (a[pe] - a[ps]) % (pe - ps) == 0) {
    de = (a[pe] - a[ps]) / (pe - ps);
    F = true;
  } else {
    for (int i = pe + 1; i <= n; i++) {
      if (a[i] != -1) {
        pt = i;
        F = true;
        break;
      }
    }
    if (F && (a[pt] - a[pe]) % (pt - pe) == 0 &&
        (a[pe] - (pe - ps - 1) * (a[pt] - a[pe]) / (pt - pe)) > 0) {
      de = (a[pt] - a[pe]) / (pt - pe);
    } else
      de = 0, F = false;
  }
  return F;
}
int ans() {
  int cnt = 0;
  long long d = 0;
  for (int i = 1; i < n; i++) {
    cnt++;
    d = a[i] - a[i + 1];
    for (; i < n && a[i] - a[i + 1] == d; i++)
      ;
  }
  return cnt + (a[n - 1] - a[n] != d);
}
int main() {
  cin >> n;
  for (int i = 1; i <= n; i++) cin >> a[i];
  a[n + 1] = -1;
  ps = 0, pe = 0, ds = 0, de = 0;
  st = 0;
  while (ps < n) {
    while (a[ps + 1] != -1) {
      ps++;
      if (st > 1) {
        if (a[ps] - a[ps - 1] != a[ps - 1] - a[ps - 2]) st = 0, ds = 0;
      } else
        ds = a[ps] - a[ps - 1];
      st++;
    }
    if (ps < n) {
      pe = ps + 1;
      while (pe <= n && a[pe] == -1) pe++;
      switch (st) {
        case 0:
          if (pe == n + 1) {
            for (int i = pe - 1; i > ps; i--) a[i] = 1;
          } else {
            isde();
            for (int i = pe - 1; i > ps; i--) a[i] = a[i + 1] - de;
            de = 0;
          }
          break;
        case 1:
          if (isde()) {
            for (int i = pe - 1; i > ps; i--) a[i] = a[i + 1] - de;
            break;
          }
        default:
          for (int i = ps + 1; i < pe && a[i - 1] + ds > 0; i++) {
            a[i] = a[i - 1] + ds;
            ps = i;
            st++;
          }
          if (ps < pe - 1) {
            st = 0;
            ds = 0;
          }
      }
    }
  }
  cout << ans();
  return 0;
}
