gcd(f[i],f[j])=f[gcd(i,j)]
#include <iostream>
#include <cstdio>
#define LL long long
using namespace std;
int read()
{
int x=0,f=1;
char c=getchar();
while(c<'0'||c>'9')
{
if(c=='-') f=-1;
c=getchar();
}
while(c>='0'&&c<='9')
{
x=x*10+c-'0';
c=getchar();
}
return f*x;
}
int gcd(int a,int b)
{
if(!b) return a;
return gcd(b,a%b);
}
struct matrix{LL m[2][2];}a,s;
const int mod=1e8;
int x,y,n;
matrix mul(matrix a,matrix b)
{
matrix c;
for(int i=0;i<=1;i++)
for(int j=0;j<=1;j++)
{
c.m[i][j]=0;
for(int k=0;k<=1;k++)
c.m[i][j]=(c.m[i][j]+a.m[i][k]*b.m[k][j]%mod)%mod;
}
return c;
}
int main()
{
x=read(); y=read();
n=gcd(x,y)-1;
s.m[0][0]=s.m[1][1]=1;
a.m[0][1]=a.m[1][0]=a.m[1][1]=1;
while(n)
{
if(n&1) s=mul(s,a);
a=mul(a,a);
n/=2;
}
cout<<(s.m[0][0]+s.m[1][0])%mod;
return 0;
}