#include <iostream>
#include <cstring>

int half[2001]; //0<=a, b<=1000 として a+b となる組み合わせの数

void makeSet(){
	memset(half, 0, sizeof(half));
	//半分全列挙
	for(int i=0; i<=1000; ++i){
		for(int j=0; j<=1000; ++j){
			int k=i+j;
			++half[k];
		}
	}
}

int solve(int n){
	int num=0;
	int max=n<2000?n:2000; //Counterが半分全列挙の上限を超えない為

	for(int i=0; i<=max; ++i){
		if(n-i<=2000) num+=half[i]*half[n-i]; //左半分の組み合わせ * 右半分の組み合わせ = 全組み合わせ
	}
	return num;
}

int main(){
	makeSet();

	while(true){
		int n;
		std::cin>>n;
		if(std::cin.eof()) break;
		
		std::cout<<solve(n)<<std::endl;
	}
	return 0;
}