# PROBLEM LINK:

* Author:* Anuska Sinha

*Akash Kumar Bhagat Arnab Chanda*

**Tester:**# DIFFICULTY:

EASY-MED

# PREREQUISITES:

Math

# PROBLEM:

An array of numbers is given and an integer number (say M) is given. After performing 3 operations on the array, you will have to find the immediate greater and smaller numbers to the number provided (say M).

# EXPLANATION:

Take an array … ( say [ 5, 15,1, 66, 55, 32, 40, 22, 34, 11 ] ) and take an integer M= 38

Now, perform the 1st step by swapping 5 and 15, 1 and 66, 55 and 32 and so on. ( Note that if the number of elements in the array is odd, then leave the last number of the array in it’s place)

Then in the step 2, add %3 of each element to itself.

The array after step 2 will look like [15, 7, 66, 2, 34, 56, 23, 41, 13, 35]

If the 3 and the last step, swap the 1st and last, 2nd and the 2nd last element and so on.

After this step the final array is [35, 13, 41, 23, 56, 34, 2, 66, 7, 15]

In this array, find the immediate greater and smaller number to M and print it.

In special cases where there is no greater or smaller number or both, print -1 in their places

# SOLUTIONS:

## Python

```
import bisect
for _ in range(int(input())):
n=int(input())
a=[int(i) for i in input().split()]
m=int(input())
for i in range(n):
a[i]+=a[i]%3
a=sorted(a)
x=bisect.bisect_left(a,m)
y=bisect.bisect_right(a,m)
#print(a)
inc=0;dec=0
if x-1<0:
inc=-1
else:
inc=a[x-1]
if y==n:
dec=-1
else:
dec=a[y]
print(inc,dec)
```