/*
TASK: fib
LANG:C++
*/
#include <iostream>
//#include <string>

using namespace std;

unsigned long long m,n,i,j;
unsigned long long fib[1<<7]={0,1,1};

/* string add(string a,string b)
{
    a.
} */
int main()
{
    cin>>n>>m;
    if(m==1)
    {
        cout<<"0\n";
        return 0;
    }
    for(i=3;i<91;i++)
    {
        fib[i]=fib[i-1]+fib[i-2];
        if((fib[i]%m==1)&&(fib[i-1]%m==1))
            break;
    }
//    cout<<"All numbers calculated...\n";
    if(i!=91)
    {
        i-=2;
//        cout<<n%i<<"\n";
        cout<<fib[n%i]%m<<"\n"; 
//        for(j=1;j<=i;j++)
//            cout<<fib[j]%m<<" "; 
        return 0;
    }
    else
        cout<<fib[(m+n/2537)%i]%m<<"\n";
/*    cout<<"Cycle not found...\n";
    int p=m+n;
    cout<<"p is calculated...\n";
    int q=p%i;
    cout<<"p is moded into q...\n";
    p=fib[q]%m;
    cout<<"fib[q] is moded into p...\n";
    cout<<p<<"\n";   */      
    return 0;
}
