JerryL/AlgoSimBench huggingface dataset:
873_D. Merge Sort

Merge sort is a well-known sorting algorithm. The main function that sorts the elements of array a with indices from [l, r) can be implemented as follows:

  1. If the segment [l, r) is already sorted in non-descending order (that is, for any i such that l ≤ i < r - 1 a[i] ≤ a[i + 1]), then end the function call; 
  2. Let <image>; 
  3. Call mergesort(a, l, mid); 
  4. Call mergesort(a, mid, r); 
  5. Merge segments [l, mid) and [mid, r), making the segment [l, r) sorted in non-descending order. The merge algorithm doesn't call any other functions. 



The array in this problem is 0-indexed, so to sort the whole array, you need to call mergesort(a, 0, n).

The number of calls of function mergesort is very important, so Ivan has decided to calculate it while sorting the array. For example, if a = {1, 2, 3, 4}, then there will be 1 call of mergesort — mergesort(0, 4), which will check that the array is sorted and then end. If a = {2, 1, 3}, then the number of calls is 3: first of all, you call mergesort(0, 3), which then sets mid = 1 and calls mergesort(0, 1) and mergesort(1, 3), which do not perform any recursive calls because segments (0, 1) and (1, 3) are sorted.

Ivan has implemented the program that counts the number of mergesort calls, but now he needs to test it. To do this, he needs to find an array a such that a is a permutation of size n (that is, the number of elements in a is n, and every integer number from [1, n] can be found in this array), and the number of mergesort calls when sorting the array is exactly k.

Help Ivan to find an array he wants!

Input

The first line contains two numbers n and k (1 ≤ n ≤ 100000, 1 ≤ k ≤ 200000) — the size of a desired permutation and the number of mergesort calls required to sort it.

Output

If a permutation of size n such that there will be exactly k calls of mergesort while sorting it doesn't exist, output  - 1. Otherwise output n integer numbers a[0], a[1], ..., a[n - 1] — the elements of a permutation that would meet the required conditions. If there are multiple answers, print any of them.

Examples

Input

3 3


Output

2 1 3 

Input

4 1


Output

1 2 3 4 

Input

5 6


Output

-1

Example input:
3 3

5 6

4 1


Example output:
3 1 2 

-1

1 2 3 4 


Tags: constructive algorithms
divide and conquer
Difficulty rating: 1800

Solution:
n, k = map(int, raw_input().split())
def go(l, r, x):
	global k
	if k == 0 or l == r - 1:
		for i in range(r - l):
			print x + i,
	else:
		k -= 2
		m = (l + r) / 2
		go(l, m, x + r - m)
		go(m, r, x)

if k % 2 == 0 or k > 2 * n:
	print -1
else:
	k -= 1
	go(0, n, 1)
1175_B. Catch Overflow!

You are given a function f written in some basic language. The function accepts an integer value, which is immediately written into some variable x. x is an integer variable and can be assigned values from 0 to 2^{32}-1. The function contains three types of commands:

  * for n — for loop; 
  * end — every command between "for n" and corresponding "end" is executed n times; 
  * add — adds 1 to x. 



After the execution of these commands, value of x is returned.

Every "for n" is matched with "end", thus the function is guaranteed to be valid. "for n" can be immediately followed by "end"."add" command can be outside of any for loops.

Notice that "add" commands might overflow the value of x! It means that the value of x becomes greater than 2^{32}-1 after some "add" command. 

Now you run f(0) and wonder if the resulting value of x is correct or some overflow made it incorrect.

If overflow happened then output "OVERFLOW!!!", otherwise print the resulting value of x.

Input

The first line contains a single integer l (1 ≤ l ≤ 10^5) — the number of lines in the function.

Each of the next l lines contains a single command of one of three types:

  * for n (1 ≤ n ≤ 100) — for loop; 
  * end — every command between "for n" and corresponding "end" is executed n times; 
  * add — adds 1 to x. 

Output

If overflow happened during execution of f(0), then output "OVERFLOW!!!", otherwise print the resulting value of x.

Examples

Input


9
add
for 43
end
for 10
for 15
add
end
add
end


Output


161


Input


2
for 62
end


Output


0


Input


11
for 100
for 100
for 100
for 100
for 100
add
end
end
end
end
end


Output


OVERFLOW!!!

Note

In the first example the first "add" is executed 1 time, the second "add" is executed 150 times and the last "add" is executed 10 times. Note that "for n" can be immediately followed by "end" and that "add" can be outside of any for loops.

In the second example there are no commands "add", thus the returning value is 0.

In the third example "add" command is executed too many times, which causes x to go over 2^{32}-1.

Example input:
2
for 62
end

11
for 100
for 100
for 100
for 100
for 100
add
end
end
end
end
end

9
add
for 43
end
for 10
for 15
add
end
add
end


Example output:
0

OVERFLOW!!!

161


Tags: data structures
expression parsing
implementation
Difficulty rating: 1600

Solution:
z=0
for s in[[1.]]*input():
 t,c=raw_input(),s.pop()
 if'f'<t:s+=c,c*int(t[4:])
 if'e'>t:z+=c;s+=c,
print['OVERFLOW!!!','%.f'%z][z<2**32]
p02630 AtCoder Beginner Contest 171 - Replacing

You have a sequence A composed of N positive integers: A_{1}, A_{2}, \cdots, A_{N}.

You will now successively do the following Q operations:

* In the i-th operation, you replace every element whose value is B_{i} with C_{i}.



For each i (1 \leq i \leq Q), find S_{i}: the sum of all elements in A just after the i-th operation.

Constraints

* All values in input are integers.
* 1 \leq N, Q, A_{i}, B_{i}, C_{i} \leq 10^{5}
* B_{i} \neq C_{i}

Input

Input is given from Standard Input in the following format:


N
A_{1} A_{2} \cdots A_{N}
Q
B_{1} C_{1}
B_{2} C_{2}
\vdots
B_{Q} C_{Q}


Output

Print Q integers S_{i} to Standard Output in the following format:


S_{1}
S_{2}
\vdots
S_{Q}


Note that S_{i} may not fit into a 32-bit integer.

Examples

Input

4
1 2 3 4
3
1 2
3 4
2 4


Output

11
12
16


Input

4
1 1 1 1
3
1 2
2 1
3 5


Output

8
4
4


Input

2
1 2
3
1 100
2 100
100 1000


Output

102
200
2000

Example input:
2
1 2
3
1 100
2 100
100 1000
4
1 2 3 4
3
1 2
3 4
2 4
4
1 1 1 1
3
1 2
2 1
3 5

Example output:
102
200
2000
11
12
16
8
4
4

Difficulty rating: 0

Solution:
_,a,_,*q=[map(int,t.split())for t in open(0)]
s,*d=[0]*8**6
for i in a:s+=i;d[i]+=1
for b,c in q:s+=(c-b)*d[b];d[c]+=d[b];d[b]=0;print(s)
405_A. Gravity Flip

Little Chris is bored during his physics lessons (too easy), so he has built a toy box to keep himself occupied. The box is special, since it has the ability to change gravity.

There are n columns of toy cubes in the box arranged in a line. The i-th column contains ai cubes. At first, the gravity in the box is pulling the cubes downwards. When Chris switches the gravity, it begins to pull all the cubes to the right side of the box. The figure shows the initial and final configurations of the cubes in the box: the cubes that have changed their position are highlighted with orange.

<image>

Given the initial configuration of the toy cubes in the box, find the amounts of cubes in each of the n columns after the gravity switch!

Input

The first line of input contains an integer n (1 ≤ n ≤ 100), the number of the columns in the box. The next line contains n space-separated integer numbers. The i-th number ai (1 ≤ ai ≤ 100) denotes the number of cubes in the i-th column.

Output

Output n integer numbers separated by spaces, where the i-th number is the amount of cubes in the i-th column after the gravity switch.

Examples

Input

4
3 2 1 2


Output

1 2 2 3 


Input

3
2 3 8


Output

2 3 8 

Note

The first example case is shown on the figure. The top cube of the first column falls to the top of the last column; the top cube of the second column falls to the top of the third column; the middle cube of the first column falls to the top of the second column.

In the second example case the gravity switch does not change the heights of the columns.

Example input:
3
2 3 8

4
3 2 1 2


Example output:
2 3 8 
1 2 2 3 

Tags: greedy
implementation
sortings
Difficulty rating: 900

Solution:
input();print(*sorted(input().split(),key=int))
p02948 AtCoder Beginner Contest 137 - Summer Vacation

There are N one-off jobs available. If you take the i-th job and complete it, you will earn the reward of B_i after A_i days from the day you do it.

You can take and complete at most one of these jobs in a day.

However, you cannot retake a job that you have already done.

Find the maximum total reward that you can earn no later than M days from today.

You can already start working today.

Constraints

* All values in input are integers.
* 1 \leq N \leq 10^5
* 1 \leq M \leq 10^5
* 1 \leq A_i \leq 10^5
* 1 \leq B_i \leq 10^4

Input

Input is given from Standard Input in the following format:


N M
A_1 B_1
A_2 B_2
\vdots
A_N B_N


Output

Print the maximum total reward that you can earn no later than M days from today.

Examples

Input

3 4
4 3
4 1
2 2


Output

5


Input

5 3
1 2
1 3
1 4
2 1
2 3


Output

10


Input

1 1
2 1


Output

0

Example input:
5 3
1 2
1 3
1 4
2 1
2 3
1 1
2 1
3 4
4 3
4 1
2 2

Example output:
10
0
5

Difficulty rating: 0

Solution:
from heapq import*
(N,M),*t=[map(int,s.split())for s in open(0)]
z,*q=[0]*50*M
v=[[]for _ in q]
for a,b in t:v[a-1]+=b,
for i in v[:M]:[heappush(q,-j)for j in i];z-=heappop(q)
print(z)
p03504 AtCoder Beginner Contest 080 - Recording

Joisino is planning to record N TV programs with recorders.

The TV can receive C channels numbered 1 through C.

The i-th program that she wants to record will be broadcast from time s_i to time t_i (including time s_i but not t_i) on Channel c_i.

Here, there will never be more than one program that are broadcast on the same channel at the same time.

When the recorder is recording a channel from time S to time T (including time S but not T), it cannot record other channels from time S-0.5 to time T (including time S-0.5 but not T).

Find the minimum number of recorders required to record the channels so that all the N programs are completely recorded.

Constraints

* 1≤N≤10^5
* 1≤C≤30
* 1≤s_i<t_i≤10^5
* 1≤c_i≤C
* If c_i=c_j and i≠j, either t_i≤s_j or s_i≥t_j.
* All input values are integers.

Input

Input is given from Standard Input in the following format:


N C
s_1 t_1 c_1
:
s_N t_N c_N


Output

When the minimum required number of recorders is x, print the value of x.

Examples

Input

3 2
1 7 2
7 8 1
8 12 1


Output

2


Input

3 4
1 3 2
3 4 4
1 4 3


Output

3


Input

9 4
56 60 4
33 37 2
89 90 3
32 43 1
67 68 3
49 51 3
31 32 3
70 71 1
11 12 3


Output

2

Example input:
9 4
56 60 4
33 37 2
89 90 3
32 43 1
67 68 3
49 51 3
31 32 3
70 71 1
11 12 3
3 2
1 7 2
7 8 1
8 12 1
3 4
1 3 2
3 4 4
1 4 3

Example output:
2
2
3

Difficulty rating: 0

Solution:
n,c=map(int,input().split())
t=[[0]*10**5 for i in range(c)]
for i in range(n):
	a,b,c=map(int,input().split())
	t[c-1][a-1:b]=[1]*(b-a+1)
print(max(map(sum,zip(*t))))
p03263 AtCoder Beginner Contest 109 - Make Them Even

There is a grid of square cells with H horizontal rows and W vertical columns. The cell at the i-th row and the j-th column will be denoted as Cell (i, j).

In Cell (i, j), a_{ij} coins are placed.

You can perform the following operation any number of times:

Operation: Choose a cell that was not chosen before and contains one or more coins, then move one of those coins to a vertically or horizontally adjacent cell.

Maximize the number of cells containing an even number of coins.

Constraints

* All values in input are integers.
* 1 \leq H, W \leq 500
* 0 \leq a_{ij} \leq 9

Input

Input is given from Standard Input in the following format:


H W
a_{11} a_{12} ... a_{1W}
a_{21} a_{22} ... a_{2W}
:
a_{H1} a_{H2} ... a_{HW}


Output

Print a sequence of operations that maximizes the number of cells containing an even number of coins, in the following format:


N
y_1 x_1 y_1' x_1'
y_2 x_2 y_2' x_2'
:
y_N x_N y_N' x_N'


That is, in the first line, print an integer N between 0 and H \times W (inclusive), representing the number of operations.

In the (i+1)-th line (1 \leq i \leq N), print four integers y_i, x_i, y_i' and x_i' (1 \leq y_i, y_i' \leq H and 1 \leq x_i, x_i' \leq W), representing the i-th operation. These four integers represents the operation of moving one of the coins placed in Cell (y_i, x_i) to a vertically or horizontally adjacent cell, (y_i', x_i').

Note that if the specified operation violates the specification in the problem statement or the output format is invalid, it will result in Wrong Answer.

Examples

Input

2 3
1 2 3
0 1 1


Output

3
2 2 2 3
1 1 1 2
1 3 1 2


Input

3 2
1 0
2 1
1 0


Output

3
1 1 1 2
1 2 2 2
3 1 3 2


Input

1 5
9 9 9 9 9


Output

2
1 1 1 2
1 3 1 4

Example input:
1 5
9 9 9 9 9
3 2
1 0
2 1
1 0
2 3
1 2 3
0 1 1

Example output:
2
1 1 1 2
1 3 1 4
3
1 1 1 2
1 2 2 2
3 1 3 2
3
2 2 2 3
1 1 1 2
1 3 1 2

Difficulty rating: 0

Solution:
(h,w),*a=[map(int,o.split())for o in open(0)]
B=[];l=[]
for y in range(h):
 *A,=a[y]
 for x in range(1,w):c=A[x-1]%2;l+=[(y+1,x,y+1,x+1)]*c;A[x]+=c
 B+=A[w-1],
 if y and B[-2]%2:l+=(y,w,y+1,w),;B[y]+=1
print(len(l))
for a in l:print(*a)
p02557 AtCoder Beginner Contest 178 - Contrast

Given are two sequences A and B, both of length N. A and B are each sorted in the ascending order. Check if it is possible to reorder the terms of B so that for each i (1 \leq i \leq N) A_i \neq B_i holds, and if it is possible, output any of the reorderings that achieve it.

Constraints

* 1\leq N \leq 2 \times 10^5
* 1\leq A_i,B_i \leq N
* A and B are each sorted in the ascending order.
* All values in input are integers.

Input

Input is given from Standard Input in the following format:


N
A_1 A_2 \cdots A_N
B_1 B_2 \cdots B_N


Output

If there exist no reorderings that satisfy the condition, print `No`.

If there exists a reordering that satisfies the condition, print `Yes` on the first line. After that, print a reordering of B on the second line, separating terms with a whitespace.

If there are multiple reorderings that satisfy the condition, you can print any of them.

Examples

Input

6
1 1 1 2 2 3
1 1 1 2 2 3


Output

Yes
2 2 3 1 1 1


Input

3
1 1 2
1 1 3


Output

No


Input

4
1 1 2 3
1 2 3 3


Output

Yes
3 3 1 2

Example input:
3
1 1 2
1 1 3
4
1 1 2 3
1 2 3 3
6
1 1 1 2 2 3
1 1 1 2 2 3

Example output:
No
Yes
3 3 1 2
Yes
2 2 3 1 1 1

Difficulty rating: 0

Solution:
from bisect import bisect_left,bisect_right
n=int(input())
a=list(map(int,input().split()))
b=list(map(int,input().split()))
bset=set(b)

ans=0
for i in range(n):
  if a[i] in bset:
    ans=max(bisect_right(b,a[i])-i,ans)

# bを回転
b=(b+b)[ans:ans+n]
# check
for i in range(n):
  if a[i]==b[i]:
    exit(print("No"))
print("Yes")
print(*b)
p02689 AtCoder Beginner Contest 166 - Peaks

There are N observatories in AtCoder Hill, called Obs. 1, Obs. 2, ..., Obs. N. The elevation of Obs. i is H_i. There are also M roads, each connecting two different observatories. Road j connects Obs. A_j and Obs. B_j.

Obs. i is said to be good when its elevation is higher than those of all observatories that can be reached from Obs. i using just one road. Note that Obs. i is also good when no observatory can be reached from Obs. i using just one road.

How many good observatories are there?

Constraints

* 2 \leq N \leq 10^5
* 1 \leq M \leq 10^5
* 1 \leq H_i \leq 10^9
* 1 \leq A_i,B_i \leq N
* A_i \neq B_i
* Multiple roads may connect the same pair of observatories.
* All values in input are integers.

Input

Input is given from Standard Input in the following format:


N M
H_1 H_2 ... H_N
A_1 B_1
A_2 B_2
:
A_M B_M


Output

Print the number of good observatories.

Examples

Input

4 3
1 2 3 4
1 3
2 3
2 4


Output

2


Input

6 5
8 6 9 1 2 1
1 3
4 2
4 3
4 6
4 6


Output

3

Example input:
6 5
8 6 9 1 2 1
1 3
4 2
4 3
4 6
4 6
4 3
1 2 3 4
1 3
2 3
2 4

Example output:
3
2

Difficulty rating: 0

Solution:
n,h,*t=[[*map(int,t.split())]for t in open(0)]
p=[1]*n[0]
for a,b in t:x,y=h[a-1],h[b-1];p[-a]&=x>y;p[-b]&=y>x
print(sum(p))
22_C. System Administrator

Bob got a job as a system administrator in X corporation. His first task was to connect n servers with the help of m two-way direct connection so that it becomes possible to transmit data from one server to any other server via these connections. Each direct connection has to link two different servers, each pair of servers should have at most one direct connection. Y corporation, a business rival of X corporation, made Bob an offer that he couldn't refuse: Bob was asked to connect the servers in such a way, that when server with index v fails, the transmission of data between some other two servers becomes impossible, i.e. the system stops being connected. Help Bob connect the servers.

Input

The first input line contains 3 space-separated integer numbers n, m, v (3 ≤ n ≤ 105, 0 ≤ m ≤ 105, 1 ≤ v ≤ n), n — amount of servers, m — amount of direct connections, v — index of the server that fails and leads to the failure of the whole system.

Output

If it is impossible to connect the servers in the required way, output -1. Otherwise output m lines with 2 numbers each — description of all the direct connections in the system. Each direct connection is described by two numbers — indexes of two servers, linked by this direct connection. The servers are numbered from 1. If the answer is not unique, output any.

Examples

Input

5 6 3


Output

1 2
2 3
3 4
4 5
1 3
3 5


Input

6 100 1


Output

-1

Example input:
5 6 3

6 100 1


Example output:
3 1
3 2
3 4
3 5
2 4
2 5

-1


Tags: graphs
Difficulty rating: 1700

Solution:
n, m, v = map(int, input().split())
if m < n - 1 or 2 * m > n * (n - 3) + 4: exit(print(-1))
r = list(range(1, n + 1))
r.pop(v - 1)
for i in r: print(v, i)
r.pop()
for i in r:
 for j in r:
  if j > i:
   if n > m: exit()
   print(i, j)
   n += 1
429_A. Xor-tree

Iahub is very proud of his recent discovery, propagating trees. Right now, he invented a new tree, called xor-tree. After this new revolutionary discovery, he invented a game for kids which uses xor-trees.

The game is played on a tree having n nodes, numbered from 1 to n. Each node i has an initial value initi, which is either 0 or 1. The root of the tree is node 1.

One can perform several (possibly, zero) operations on the tree during the game. The only available type of operation is to pick a node x. Right after someone has picked node x, the value of node x flips, the values of sons of x remain the same, the values of sons of sons of x flips, the values of sons of sons of sons of x remain the same and so on.

The goal of the game is to get each node i to have value goali, which can also be only 0 or 1. You need to reach the goal of the game by using minimum number of operations.

Input

The first line contains an integer n (1 ≤ n ≤ 105). Each of the next n - 1 lines contains two integers ui and vi (1 ≤ ui, vi ≤ n; ui ≠ vi) meaning there is an edge between nodes ui and vi. 

The next line contains n integer numbers, the i-th of them corresponds to initi (initi is either 0 or 1). The following line also contains n integer numbers, the i-th number corresponds to goali (goali is either 0 or 1).

Output

In the first line output an integer number cnt, representing the minimal number of operations you perform. Each of the next cnt lines should contain an integer xi, representing that you pick a node xi.

Examples

Input

10
2 1
3 1
4 2
5 1
6 2
7 5
8 6
9 8
10 5
1 0 1 1 0 1 0 1 0 1
1 0 1 0 0 1 1 1 0 1


Output

2
4
7

Example input:
10
2 1
3 1
4 2
5 1
6 2
7 5
8 6
9 8
10 5
1 0 1 1 0 1 0 1 0 1
1 0 1 0 0 1 1 1 0 1


Example output:
2
4
7


Tags: dfs and similar
trees
Difficulty rating: 1300

Solution:
n=int(input())
adj=[[] for i in range(n+1)]
for i in range(n-1):
	a,b=map(int,input().split())
	adj[a].append(b)
	adj[b].append(a)
u=[-1]+list(map(int,input().split()))
v=[-1]+list(map(int,input().split()))
q=[(1,0,0,0)]
ans=[]
while q:
	x,a,b,c=q.pop()
	if a:
		if b!=(u[x]!=v[x]):
			ans.append(x)
			b=1-b
	else:
		if c!=(u[x]!=v[x]):
			ans.append(x)
			c=1-c
	a=1-a
	for i in adj[x]:
		adj[i].remove(x)
		q.append((i,a,b,c))
print(len(ans))
print('\n'.join(map(str,ans)))
814_D. An overnight dance in discotheque

The crowdedness of the discotheque would never stop our friends from having fun, but a bit more spaciousness won't hurt, will it?

The discotheque can be seen as an infinite xy-plane, in which there are a total of n dancers. Once someone starts moving around, they will move only inside their own movement range, which is a circular area Ci described by a center (xi, yi) and a radius ri. No two ranges' borders have more than one common point, that is for every pair (i, j) (1 ≤ i < j ≤ n) either ranges Ci and Cj are disjoint, or one of them is a subset of the other. Note that it's possible that two ranges' borders share a single common point, but no two dancers have exactly the same ranges.

Tsukihi, being one of them, defines the spaciousness to be the area covered by an odd number of movement ranges of dancers who are moving. An example is shown below, with shaded regions representing the spaciousness if everyone moves at the same time.

<image>

But no one keeps moving for the whole night after all, so the whole night's time is divided into two halves — before midnight and after midnight. Every dancer moves around in one half, while sitting down with friends in the other. The spaciousness of two halves are calculated separately and their sum should, of course, be as large as possible. The following figure shows an optimal solution to the example above.

<image>

By different plans of who dances in the first half and who does in the other, different sums of spaciousness over two halves are achieved. You are to find the largest achievable value of this sum.

Input

The first line of input contains a positive integer n (1 ≤ n ≤ 1 000) — the number of dancers.

The following n lines each describes a dancer: the i-th line among them contains three space-separated integers xi, yi and ri ( - 106 ≤ xi, yi ≤ 106, 1 ≤ ri ≤ 106), describing a circular movement range centered at (xi, yi) with radius ri.

Output

Output one decimal number — the largest achievable sum of spaciousness over two halves of the night.

The output is considered correct if it has a relative or absolute error of at most 10 - 9. Formally, let your answer be a, and the jury's answer be b. Your answer is considered correct if <image>.

Examples

Input

5
2 1 6
0 4 1
2 -1 3
1 -2 1
4 -1 1


Output

138.23007676


Input

8
0 0 1
0 0 2
0 0 3
0 0 4
0 0 5
0 0 6
0 0 7
0 0 8


Output

289.02652413

Note

The first sample corresponds to the illustrations in the legend.

Example input:
5
2 1 6
0 4 1
2 -1 3
1 -2 1
4 -1 1

8
0 0 1
0 0 2
0 0 3
0 0 4
0 0 5
0 0 6
0 0 7
0 0 8


Example output:
138.230076757951

289.026524130261


Tags: dfs and similar
dp
geometry
greedy
trees
Difficulty rating: 2000

Solution:
s = 0
t = [list(map(int, input().split())) for i in range(int(input()))]
f = lambda b: a[2] < b[2] and (a[0] - b[0]) ** 2 + (a[1] - b[1]) ** 2 <= (a[2] - b[2]) ** 2
for a in t:
    k = sum(f(b) for b in t)
    s += (-1, 1)[(k < 1) + k & 1] * a[2] ** 2
print(3.1415926536 * s)