spoj#COUNT1IT. Ghost Town

Ghost Town

You are given n numbers initially. You have to maintain a multiset for those n numbers. Then you are given q queries. Qeuries will be one of the following types -

1) 1 x : Let a be the count of elements smaller than or equal to x. Add x+a into the multiset. 

2) 2 y : report the number of numbers in the multiset that are smaller than or equal to y.

3) 3 z : report the zth smallest number of the multiset. Note that if any number d appears more than once, it is to be counted as many times it appears! Also, if z exceeds the number of elements in the multiset, that is answer for this query doesn't exist, print "invalid". Look at the sample input for clarification.

Note:

since it is a multiset, it will also store duplicates. Also, lets say our multiset has elements 1,2,2,3,3,3. then for z=3, answer would be 2 .

Constraints 

1<=n<=100000

1<=q<=100000

1<=x<=(10^9-2*10^5)

1<=y,z<=10^9

1<=Initial elements of the multiset<=(10^9-2*10^5)

Input

The first line  will contain two integers, n and q, denoting the number of initially members of the multiset and the number of queries.

Next q lines will be of he form - 

Type D : That is, the queries will be of the one of given 3 types and accordingly, you will be given and integer D.

 

10 20
7 35 44 25 15 10 21 42 12 33 
1 6
1 39
2 47
2 96
1 29
2 40
3 27
3 5
1 22
1 44
3 32
1 28
3 2
2 39
3 23
2 31
1 13
1 50
3 38
2 26

 

Output

You have to print the output for query numbers 2 and 3.

Example

Input:

10 20

7 35 44 25 15 10 21 42 12 33 

1 6

1 39

2 47

2 96

1 29

2 40

3 27

3 5

1 22

1 44

3 32

1 28

3 2

2 39

3 23

2 31

1 13

1 50

3 38

2 26

Output:

11

12

10

invalid

15

invalid

7

12

invalid

8

invalid

8