Fibonacci number f(i) appear in a variety of puzzles in nature and math, including packing problems, family trees or Pythagorean triangles. They obey the rule f(i) = f(i - 1) + f(i - 2), where we set f(0) = 1 = f(-1).

Let V and d be two certain positive integers and be N ≡ 1001 a constant. Consider a set of V nodes, each node i having a Fibonacci label F[i] = (f(i) mod N) assigned for i = 1,..., V ≤ N. If |F(i) - F(j)| < d, then the nodes i and j are connected.

Given V and d, how many connected subsets of nodes will you obtain?

<image>

Figure 1: There are 4 connected subsets for V = 20 and d = 100.

Constraints

* 1 ≤ V ≤ 1000
* 1 ≤ d ≤ 150

Input

Each data set is defined as one line with two integers as follows:

Line 1: Number of nodes V and the distance d.

Input includes several data sets (i.e., several lines). The number of dat sets is less than or equal to 50.

Output

Output line contains one integer - the number of connected subsets - for each input line.

Example

Input

5 5
50 1
13 13


Output

2
50
8
#define _USE_MATH_DEFINES
#define INF 100000000
#include <iostream>
#include <sstream>
#include <cmath>
#include <cstdlib>
#include <algorithm>
#include <queue>
#include <stack>
#include <limits>
#include <map>
#include <string>
#include <cstring>
#include <set>
#include <deque>
#include <bitset>
#include <list>

using namespace std;

typedef long long ll;
typedef pair <int,int> P;
typedef pair <int,P> PP;

static const double EPS = 1e-8;

const int tx[] = {0,1,0,-1};
const int ty[] = {-1,0,1,0};

const static ll N = 1001;

short fib_table[10000000];

int fib(int n){
	if(n==-1 || n==0) return 1;
	else if(fib_table[n]!=-1) return fib_table[n];
	else return (fib_table[n] = ((fib(n-1) % N) + (fib(n-2) %N)) % N);
}

int main(){
	memset(fib_table,-1,sizeof(fib_table));

	int V,d;
	while(~scanf("%d %d",&V,&d)){
		int rank[N];
		int par[N];

		vector<int> fibs;
		for(int i=1;i<=V;i++){
			fibs.push_back(fib(i));
		}

		sort(fibs.begin(),fibs.end());
		int res=1;
		for(int i=1;i<fibs.size();i++){
			if(fibs[i]-fibs[i-1]>=d) res++;
		}

		cout << res << endl;
	}
}