#include <cstdio>
#include <cstdlib>
#include <algorithm>
using namespace std;
int c[1001],w[1001];
int sum[1001];
bool can[1001][1001];
int dp[1001];
int main() {
	int N;
	scanf("%d",&N);
	for(int i=1;i<=N;i++) {
		scanf("%d %d",&c[i],&w[i]);
		sum[i]=sum[i-1]+w[i];
	}
	for(int i=1;i<=N;i++) can[i][i]=1;
	for(int i=1;i<=N-1;i++) {
		for(int j=1;j+i<=N;j++) {
			can[j][i+j]|=(can[j+1][j+i] && (sum[j+i]-sum[j])<=c[j]);
			can[j][i+j]|=(can[j][j+i-1] && (sum[j+i-1]-sum[j-1])<=c[j+i]);
		}
	}
	fill(dp,dp+(N+1),1<<29);
	dp[0]=0;
	for(int i=1;i<=N;i++) {
		for(int j=1;j<=i;j++) {
			if(can[j][i]) {
				dp[i]=min(dp[i],dp[j-1]+1);
			}
		}
	}
	printf("%d\n",dp[N]);
}