/*
TASK:phrope
LANG:C++ 
*/
#include<iostream>
#include<string>
using namespace std;
string divtwo(string r)
{
	int i,ost,k,F;
	string u;
	if(r[0]>=50)
	{
		k=1;
		F=r[0]-48;
		ost=F%2;
		u.push_back(F/2+48);
	}
	else
	{
		k=2;
		F=10*(r[0]-48)+(r[1]-48);
		ost=F%2;
		u.push_back(F/2+48);
	}
	for(i=k;i<r.size();i++)
	{
		F=(r[i]-48)+10*ost;
		ost=F%2;
		u.push_back(F/2+48);
	}
	return u;
}
string bytwo(string r)
{
	int i,pren=0,F,m;
	char e;
	string u;
	for(i=r.size()-1;i>=0;i--)
	{
		F=(r[i]-48)*2+pren;
		pren=F/10;
		u.push_back(F%10+48);
		if(i==0&&pren>0)u.push_back((F/10)%10+48);
	}
	m=u.size();
	for(i=0;i<m/2;i++)
	{
		e=u[i];
		u[i]=u[m-i-1];
		u[m-i-1]=e;
	}
	return u;
}
int chetno(string h)
{
	int y=h.size()-1;
	if((h[y]-48)%2==0)return 1;
	else return 0;
}
int comp(string a,string b)
{
	int i;
	if(a.size()>b.size())return 1;
	if(a.size()<b.size())return 2;
	for(i=0;i<a.size();i++)
	{
		if(a[i]>b[i])return 1;
		if(a[i]<b[i])return 2;
	}
	return 0;
}
string minust(string d)
{
	int i,m,n=d.size();
	string k;
	char q;
	k.push_back((10+(d[n-1]-48)-3)%10+48);
	for(i=n-2;i>=0;i--)k.push_back(d[i]);
	m=k.size();
	for(i=0;i<m/2;i++)
	{
		q=k[i];
		k[i]=k[m-i-1];
		k[m-i-1]=q;
	}
	return k;
}
int main()
{
	string a;
	string b;
	cin>>a>>b;
	if(chetno(a)==1)
	{
		if(comp(bytwo(b),a)==2)cout<<bytwo(b)<<" "<<b<<"\n";
		else cout<<a<<" "<<divtwo(a)<<"\n";
	}
	if(chetno(a)==0&&chetno(b)==1)
	{
		if(comp(bytwo(a),b)==2)cout<<bytwo(a)<<" "<<a<<"\n";
		else cout<<divtwo(b)<<" "<<b<<"\n";
	}
	string z;
	z.push_back(51);
	if(chetno(a)==0&&chetno(b)==0)
	{
		if(comp(a,b)==1&&comp(a,bytwo(minust(b)))==1)
		{
			cout<<bytwo(minust(b))<<" "<<minust(b)<<"\n";
		}
		if(comp(a,b)==2&&comp(b,bytwo(minust(a)))==1)
		{
			cout<<minust(a)<<" "<<bytwo(minust(a))<<"\n";
		}
		if(comp(a,z)==0||comp(b,z)==0)cout<<"0 0"<<"\n";
	}
	return 0;
}
