// 素数を和を求めるプログラム
#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<stack>
#include<algorithm>
#include<iostream>
#include<cmath>
#include<vector>

#include<queue>

using namespace std;

int main(void)
{
    bool flag = true;
    int n, num, last_num, loop_count = 0;
    vector<int> prime;

    // 初期値の設定
    num = last_num = 2;
    prime.push_back(num);

    while( loop_count < 50)
    {
        cin >> n;
        // 前回見つかった最後の素数値を代入
        num = last_num;

        // 素数を探索する処理
        while( last_num <= n )
        {
            num++;
            flag = true;

            for(unsigned int i = 0; i < prime.size(); i++)
            {
                if( num % prime[i] == 0 )
                {
                    // 素数で割り切れる数は, 素数ではない
                    flag = false;
                    break;
                }
            }

            if( flag == true )
            {
                // 素数が見つかった
                prime.push_back(num);
                // 見つかった最後の素数を記憶する
                last_num = num;
            }
        }

        for(unsigned int i = 0; i < prime.size(); i++)
        {
            // 目的の素数値の前後の値を表示する
            if( prime[i] == n )
            {
                printf("%d %d\n", prime[i - 1], prime[i + 1]);
            }
        }

        loop_count++;

    }

    return 0;
}

