#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
#define INF 1e6
int n;
int c[1005],w[1005];
int sum[1005];

bool data[1005][1005];
int dp[1005];


int main(void){
	scanf("%d",&n);
	for(int i=1;i<=n;i++){
		scanf("%d %d",&c[i],&w[i]);
	}
	memset(data,false,sizeof(false));
	for(int i=1;i<=n;i++){
		sum[i]=sum[i-1]+w[i];
		dp[i]=INF;
		data[i][i]=true;
	}
	for(int l=1;l<n;l++){
		for(int i=1;i<=n-l;i++){
			int r=i+l;
			if(data[i][r-1] && c[r]>=sum[r-1]-sum[i-1])data[i][r]=true;
			if(data[i+1][r] && c[i]>=sum[r]-sum[i])data[i][r]=true;
		}
	}
	dp[0]=0;
	for(int i=1;i<=n;i++){
		for(int j=1;j<=i;j++){
			if(data[j][i])dp[i]=min(dp[i],dp[j-1]+1);
		}
	}
	printf("%d\n",dp[n]);
	return 0;
}