Problem:
素数 II

素数というのは、1 よりも大きくそれ自身か 1 でしか割りきれない整数をいいます。例えば、2 は、2 と 1 でしか割り切れないので素数ですが、12 は、12 と 1 のほかに、2, 3, 4, 6 で割りきれる数なので素数ではありません。

整数 n を入力したとき、n より小さい素数のうち最も大きいものと、n より大きい素数のうち最も小さいものを出力するプログラムを作成してください。

Input

複数のデータセットが与えられます。各データセットに n (3 ≤ n ≤ 50,000) が１行に与えられます。

データセットの数は 50 を超えません。

Output

各データセットに対して、n より小さい素数のうち最大のものと、n より大きい素数のうち最小のものを１つのスペースで区切って１行に出力して下さい。

Sample Input

19
3517

Output for the Sample Input

17 23
3511 3527

Solution in Ruby (judge verdict: Accepted)

N=50021
p_f=Array.new(N+1,true);
p_f[0]=p_f[1]=false;
for i in 2..Math.sqrt(N).to_i
  next if !p_f[i]
  j=i*2
  while j<=N
    p_f[j]=false;
    j+=i
  end
end
while s=gets
	break if s==nil
	n=s.to_i
	x=n-1
	until x<2
	  break if p_f[x]
	  x-=1
	end
	for y in n+1..50022 do
	  break if p_f[y]
	end
	puts [x,y].join(' ')
end