/*
TASK: fib
LANG:C++
*/

#include <iostream>
#include <vector>
#include <string>
using namespace std;

char n[16];
int m;
vector <int> sol;
unsigned long long ost;
void del(unsigned long long x)
{
	unsigned long long y=x;
	int num,k;
	while(y)
	{
		y=y/10;
		num++;
	}
	k=strlen(n);
	if(k<=num)
	{
		for(int i=0;i<k;i++)
		{
			ost=ost*10+n[i]-'0';
		}
		ost=ost%x;
		return;
	}
	for(int i=0;i<k;i++)
	{
		ost=ost*10+n[i]-'0';
		ost=ost%x;
	}
}

int main()
{
	unsigned long long i;
    cin>>n>>m;
    if(m==1)
    {
		cout<<0<<endl;
		return 0;
	}
	sol.push_back(0);
	sol.push_back(1);
	sol.push_back(1);
	sol.push_back(2%m);
	i=3;
	while(!(sol[i]==1&&sol[i-1]==1))
	{
		i++;
		sol.push_back((sol[i-1]+sol[i-2])%m);
	}
	i=i-2;
	del(i);
	cout<<sol[ost]<<endl;
    return 0;
}
