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
#include <stdio.h>
#include <iostream>
#include <string>
#include <string.h>
#include <algorithm>
#include <math.h>
#include <vector>

using namespace std;

#define MAX_N 10010

int P[10010];
int F[1001];
int FF[1001];
int v;
int d;

void init(int N) { // 初期化 はじめは全ての頂点はバラバラ
	for (int i=0; i<N; ++i) P[i] = i;
}

int root(int a) { // a の root(代表元) を求める
	if (P[a] == a) return a; // aはroot
	return (P[a] = root(P[a])); // a の親の root を求め,a の親とする
	
}

bool is_same_set(int a, int b) { // a と b が同じグループに属するか?
	return root(a) == root(b);
}

void unite(int a, int b) { // a と b を同一グループにまとめる
	P[root(a)] = root(b);
}

int main()
{
	v = 0; d = 0;
	F[0] = 1; F[1] = 2;
	for(int i=2; i<1001; ++i){ F[i] = F[i-1] + F[i-2]; F[i] = F[i]%1001;}
	
	int count;
	
	while(cin >> v >> d){
		count =0;
		init(1001);
		for(int i=1; i<=v; ++i)
		{
			for(int j=i+1; j<=v; ++j)
			{
				if( abs(F[i]-F[j]) < d )
				{
					if(!is_same_set(i,j)){ unite(i,j); }
				}
			}
		}
		
		for(int i=1; i<=v; ++i){
			if(root(i) == i){ ++count; }
		}
		cout << count << endl;
	}

}