#include using namespace std; using ll = long long;//int型は使わない using vecl = vector; using graph = vector>; using pll = pair; const ll inf = (1LL<<61); //約2e18 const ll MOD = 998244353; const vecl delx={1,0,-1,1,-1,1,0,-1}; const vecl dely={1,1,1,0,0,-1,-1,-1}; #define rep(i,a,b) for(ll i=(ll)a; i<(ll)b; i++) #define rrep(i,a,b) for(ll i=(ll)b-1; i>=(ll)a; i--) #define all(vec1) (vec1).begin(), (vec1).end() #define yn(boolean) if(boolean){cout << "Yes" << endl;}else{cout << "No" << endl;} #define debug(var) cerr << #var << " : " << var << endl; template void eerr(Args&&... args){ ((std::cerr << args << ' '), ...) << '\n'; } //入力を取るやつ template std::istream& operator>>(std::istream& is, std::vector& v) { v.clear(); std::string line; std::getline(is >> std::ws, line); // 1行丸ごと読み込み std::stringstream ss(line); T x; while (ss >> x) { v.push_back(x); } return is; } //fastio struct FastIO { FastIO() { std::ios::sync_with_stdio(false); std::cin.tie(nullptr); } } fastio; //あまり(負の数対応) template T ovr(T a,T b){ T ret=a%b; if(ret<0)ret+=b; return ret; } const string MOD_bi = "111111111111111111111110110111"; //MOD下での逆元 ll minv(ll ina){ ll a = ina % MOD; ll ret = 1; ll V = a; rep(i,0,MOD_bi.size()){ if(MOD_bi[i]=='1')ret=(ret*V)%MOD; V=(V*V)%MOD; } return ret; } //指数をある値で割った余り ll mpow(ll a , ll b , ll M){ ll ret = 1; ll V = a; rep(i,0,64){ if((b >> i) & 1)ret=(ret*V)%M; V=(V*V)%M; } return ret; } /////////main///////// int main() { ll a,b; cin >> a>> b; cout << 10 - a << ' ' << a + b - 10 << endl; return 0; }