#include<bits/stdc++.h>
using namespace std;
unsigned long long a[300][300],b[300][300],c[300][300];
int fib(int n) {
n--;
memset(a,299,0);
memset(b,299,0);
memset(c,299,0);
a[1][1]=0;a[2][1]=1;a[1][2]=1;a[2][2]=1;
b[1][1]=1;b[2][1]=0;b[1][2]=0;b[2][2]=1;
while(n>0) {
if(n%2==1) {
for(int i=1; i<=2; i++)
for(int j=1; j<=2; j++)
for(int k=1; k<=2; k++)
c[i][k]=c[i][k]+b[i][j]*a[j][k];
for(int i=1; i<=2; i++) {
for(int j=1; j<=2; j++) {
b[i][j]=c[i][j];
c[i][j]=0;
}
}
}
for(int i=1; i<=2; i++)
for(int j=1; j<=2; j++)
for(int k=1; k<=2; k++)
c[i][k]=c[i][k]+a[i][j]*a[j][k];
for(int i=1; i<=2; i++)
for(int j=1; j<=2; j++) {
a[i][j]=c[i][j];
c[i][j]=0;
}
n=n/2;
}
return b[2][2];
}
int gcd(unsigned long a,unsigned long b){
if(a%b==0) return b;
return gcd(b,a%b);
}
int main() {
unsigned long long n,m;
cin>>n>>m;
unsigned long long a=fib(n);
unsigned long long b=fib(m);
cout<<a<<endl<<b<<endl;
cout<<gcd(a,b)<<endl;
}