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

import java.util.*;
import java.io.*;

public class Main{

	public static void main(String[] args){
		Scan scan = new Scan();
		int n = scan.nextInt();
		long[] input = new long[n];
		int undetermined = 0;
		for(int i = 0;i<n;i++){
			input[i] = scan.nextInt();
			//if(undetermined == n && input[i] == -1) undetermined = i;
		}

		while(undetermined < n){
			//System.out.println("undetermined = "+undetermined);
			int i, j;
			long first = -1, second = -1;
			for(i = undetermined;i<n;i++){
				if(input[i] != -1){
					first = input[i];
					break;
				}
			}
			for(j = i+1;j<n;j++){
				if(input[j] != -1){
					second = input[j];
					break;
				}
			}
			if(first != -1 && second != -1){
				//System.out.println("first = "+first+", second = "+second);
				long jump = (second-first)/(j-i);
				long start_value = first-(i-undetermined)*jump;
				int index = undetermined;
				if((second-first)%(j-i) == 0 && start_value>0){
					for(;start_value>0 && index<n;index++, start_value += jump){
						//System.out.println("index = "+index+", start_value = "+start_value+", jump = "+jump);
						if(input[index] == -1) input[index] = start_value;
						if(input[index] != start_value) break;
					}
				}else{
					for(;index<n;index++){
						if(input[index] == -1) input[index] = first;
						if(input[index] != first) break;
					}
				}
				undetermined = index;
			}else if(first != -1 && second == -1){
				for(int index = undetermined;index<n;index++){
					if(input[index] == -1) input[index] = first;
					if(input[index] != first) throw new InputMismatchException("this shouldn't happen");
				}
				undetermined = n;
			}else{
				for(int index = undetermined;index<n;index++){
					if(input[index] == -1) input[index] = 1;
					if(input[index] != 1) throw new InputMismatchException("this shouldn't happen");
				}
				undetermined = n;
			}

		}

		//for(int i : input) System.out.print(i+" ");
		//System.out.println();

		long result = 1,head = input[0], space = 0, jump = 0x7fffffff;
		for(int i=1;i<n;i++){
			space++;
			if(jump == 0x7fffffff) jump = input[i]-head;
			else{
				if(head + space*jump == input[i]) continue;
				else{
					result++;
					head = input[i];
					space = 0;
					jump = 0x7fffffff;
				}
			}
		}

		System.out.println(result);
	}

}

class Scan{
	BufferedReader buffer;
	StringTokenizer tok;

	Scan(){
		buffer = new BufferedReader(new InputStreamReader(System.in));
	}

	boolean hasNext(){
		while(tok == null || !tok.hasMoreElements()){
			try{
				tok = new StringTokenizer(buffer.readLine());
			}catch(IOException e){
				return false;
			}
		}
		return true;
	}

	String next(){
		if(hasNext()) return tok.nextToken();
		return null;
	}

	int nextInt(){
		return Integer.parseInt(next());
	}

}

