3
-1 1 -1
 4
45 -1 41 -1
 1
-1
 5
40 -1 44 46 48
 6
43 40 37 34 -1 -1
 7
-1 2 4 -1 4 1 5
 19
23 26 -1 -1 35 38 41 -1 -1 -1 53 -1 59 62 6 7 8 9 -1
 6
-1 2 6 -1 -1 6
 16
3 8 13 18 23 -1 -1 -1 43 48 53 45 -1 -1 -1 -1
 13
25 24 23 22 24 27 -1 33 -1 2 2 2 -1
 12
-1 17 -1 54 -1 64 -1 74 79 84 -1 94
 8
-1 12 14 16 18 20 -1 -1
 13
2 -1 3 1 3 1 -1 1 3 -1 -1 1 1
 5
-1 40 42 -1 46
 2
1000000000 -1
 14
-1 5 3 -1 -1 31 31 31 -1 31 -1 -1 4 7
 3
-1 1000000000 999999999
 7
32 33 34 -1 -1 37 38
 1
1000000000
 10
29 27 -1 23 42 -1 -1 45 -1 -1
 3
39 42 -1
 15
-1 28 -1 32 34 26 -1 26 -1 -1 26 26 26 -1 -1
 3
1000000000 999999999 1000000000
 17
-1 -1 -1 -1 64 68 72 -1 45 46 47 48 49 50 51 52 53
 3
-1 1 1000000000
 2
-1 1000000000
 3
999999999 -1 1000000000
 1
1
 2
1000000000 1000000000
 3
999999999 1000000000 -1
 7
11 8 5 -1 -1 -1 -1
 3
-1 1 2
 2
-1 21
 8
-1 -1 1 7 -1 9 5 2
 11
9 21 17 13 -1 -1 -1 -1 -1 -1 -1
 3
-1 1000000000 -1
 6
-1 6 1 -1 -1 -1
 1
65
 20
-1 32 37 -1 -1 -1 57 -1 -1 40 31 33 -1 -1 39 47 43 -1 35 32
 5
-1 1 7 -1 5
 18
21 19 -1 -1 -1 48 50 -1 54 -1 5 1 -1 -1 -1 37 36 35
 9
42 39 36 33 -1 -1 -1 34 39
 2
-1 -1

1
 1
 1
 1
 1
 3
 2
 2
 2
 3
 2
 1
 6
 1
 1
 3
 1
 1
 1
 2
 1
 2
 2
 2
 2
 1
 2
 1
 1
 1
 2
 2
 1
 3
 3
 1
 2
 1
 5
 2
 4
 2
 1

def getChainInfo(p1, p2, a, n):
    diff = a[p2] - a[p1]
    idiff = p2 - p1    
    if diff == 0:
        step = 0
        l = 0
        r = n-1
    elif diff == idiff:
        step = 1
        l = max(0, p1 - a[p1] + 1)
        r = n-1
    elif diff == -idiff:
        step = -1
        l = 0
        r = min(n-1, p2 + a[p2] - 1)
    elif diff % idiff:
        step = None
        l = None
        r = None
    else:
        step = diff / idiff
        l = 0 if step < 0 else max(0, p1 - (a[p1] - 1) / step )
        r = n - 1 if step > 0 else min(n-1, p2 + (a[p2] - 1) / -step )

    return step, l, r


def getMinChains(chains, n):
    chains.sort()
    chainCount = 0
    maxL = 0
    maxR = -1
    for c in chains:        
        #print "test", c
        if maxR == n-1 or c[0] > maxL:
            chainCount += 1
            #print maxL, maxR, a[maxL:maxR+1]
            if maxR != n-1:
                maxL = maxR+1
            else:
                return chainCount
        if c[0] <= maxL and c[1] > maxR:
            maxR = c[1]
    return chainCount + 1

#################
n = int( raw_input() )

a = map(int, raw_input().split() )

#n = len(a) # debug

if n == 1:
    print 1
    exit()

chains = []
p1 = p2 = None

for i in xrange(n):    
    if a[i] != -1:
        p1 = i
        break

if p1 == None: # only -1
    print 1
    exit()

for i in xrange(p1+1, n):
    if a[i] != -1:
        p2 = i
        break

if p2 == None: # only 1 real value
    print 1
    exit()

chainBegin = 0
step, l, r = getChainInfo(p1, p2, a, n)
if step == None: #p1 and p2 are not in chain
    chains.append( (chainBegin, p2-1) )
    chainBegin = p1+1
elif l > chainBegin: # chain cannot start from 0 
    chains.append( (chainBegin, p2-1) )
    chainBegin = l

for i in xrange(p2+1, n):
    if a[i] != -1:
        newstep, newl, newr = getChainInfo(p2, i, a, n)

        if step == None and newstep == None:
            chains.append( (chainBegin, i-1) )
            chainBegin = i
        elif newstep == step: # same chain, nothing new
            pass
        elif step == None: # ol
            chains.append( ( chainBegin , i-1) )
            chainBegin = max(chainBegin, newl, p1+1)
        elif newstep == None:
            chains.append( ( max(l, chainBegin), min(r, i-1) ) ) #chain
            chainBegin = i
        else: #old chain and new chain are valid but nor the same            
            chains.append( ( max(l, chainBegin), min(r, i-1) ) ) #chain
            chainBegin = max(chainBegin, newl, p1+1)

        assert(chainBegin != None)
        step = newstep
        l = newl
        r = newr
        p1 = p2
        p2 = i

#print r, n-1
if r == n - 1:
    chains.append( (max(l, chainBegin), n-1) )
else:
    chains.append( (p1+1, n-1) )

#print a
#for c in chains:
#    print c, a[c[0]:c[1]+1]
#print '#'*10
print getMinChains(chains, n)
