#include<stdio.h>
#include<string.h>
#include<math.h>

#define MOD 1001
#define MAX 10001

int getfibo(int);
int root(int);
int find(int,int);
void merge(int,int);

int fibo[MAX];
int p[MAX];

int main(void)
{
  fibo[0]=1; fibo[1]=2;
  int a,b,i,j;
  
  while(scanf("%d %d",&a,&d)==2)
    {
      memset(p,-1,sizeof(p));
      
      for(i=1;i<=a;i++)
	{
	  for(j=1;j<=a;j++)
	    {
	      if(abs(getfibo(i)-getfibo(j))<d)
		{
		  if(!find(i,j))memset(i,j);
		}
	    }
	}
      int b[MAX]={0},res,c=0;
      
      for(i=1;i<=a;i++)
	{
	  res=root(i);
	  if(!b[res])
	    {
	      b[res]=1; c++;
	    }
	}
      printf("%d\n",c);
    }
  return 0;
}

int getfibo(int n)
{
  if(n<1)return 1;
  if(fibo[n])return[n];
  return fibo[n]=(getfibo(n-1)+getfibo(n-2))%MOD
}

int root(int a)
{
  return p[a]<0?a:(p[a]=root(p[a]));
}

int find(int a,int b)
{
  return root(a)==root(b);
}

void merge(int a,int b)
{
  p[root(a)]=root(b);
}