#include<iostream>
#include<vector>
#include<algorithm>
#include<cctype>
#include<utility>
#include<string>
#include<cmath>
#include <numeric>
#include<map>
 
 
#define REP(i, n) for(int i = 0;i < n;i++)
#define REPR(i, n) for(int i = n;i >= 0;i--)
#define FOR(i, m, n) for(int i = m;i < n;i++)
#define FORR(i, m, n) for(int i = m;i >= n;i--)
#define SORT(v, n) sort(v, v+n);
#define VSORT(v) sort(v.begin(), v.end());
#define llong long long
#define pb(a) push_back(a)
#define INF 1e13
using namespace std;
typedef pair<int, int> P;
typedef pair<llong, llong> LP;
typedef pair<int, P> PP;
typedef pair<llong, LP> LPP;
 
typedef long long int ll;
#define MOD 1000000007

vector<ll> Eratosthenes(ll n,vector<ll>& arr){

	for(ll i = 0; i < n;i++){
		arr[i] = 1;
	}
	for(ll i = 2; i < sqrt(n); i++){
		if(arr[i]){
			for(ll j = 0; i * (j + 2) < n; j++){
				arr[i *(j + 2)] = 0;
			}
		}
    }
    return arr;
}


int main(){


    ll n;
    
    while(cin >> n){
        ll m = n * 10;
        ll ans_mini = INF,ans_maxi = INF;
        vector<ll> arr(m);
        arr = Eratosthenes(m,arr);        
        REP(i,arr.size()){
            if(i < n && arr[i]){
                ans_mini = i;
            }
            if(i > n && arr[i]){
                ans_maxi = i;
                break;
            }
        }
        cout << ans_mini << " " << ans_maxi << endl;
    }
    
    return 0;
}
