import
java.util.*;
class
GFG
{
static
int
MAX =
100000
;
static
boolean
[]prime =
new
boolean
[MAX +
1
];
static
void
SieveOfEratosthenes()
{
for
(
int
i =
0
; i < MAX +
1
; i++)
{
prime[i] =
true
;
}
for
(
int
p =
2
; p * p <= MAX; p++)
{
if
(prime[p] ==
true
)
{
for
(
int
i = p * p; i <= MAX; i += p)
prime[i] =
false
;
}
}
}
static
int
smallestPrime(
int
d)
{
int
l = (
int
) Math.pow(
10
, d -
1
);
int
r = (
int
) Math.pow(
10
, d) -
1
;
for
(
int
i = l; i <= r; i++)
{
if
(prime[i])
{
return
i;
}
}
return
-
1
;
}
static
int
largestPrime(
int
d)
{
int
l = (
int
) Math.pow(
10
, d -
1
);
int
r = (
int
) Math.pow(
10
, d) -
1
;
for
(
int
i = r; i >= l; i--)
{
if
(prime[i])
{
return
i;
}
}
return
-
1
;
}
public
static
void
main(String[] args)
{
SieveOfEratosthenes();
int
queries[] = {
2
,
5
};
int
q = queries.length;
for
(
int
i =
0
; i < q; i++)
{
System.out.println(smallestPrime(queries[i]) +
" "
+
largestPrime(queries[i]));
}
}
}