You are given two sequences a_1, a_2, ..., a_n and b_1, b_2, ..., b_n. Each element of both sequences is either 0, 1 or 2. The number of elements 0, 1, 2 in the sequence a is x_1, y_1, z_1 respectively, and the number of elements 0, 1, 2 in the sequence b is x_2, y_2, z_2 respectively.

You can rearrange the elements in both sequences a and b however you like. After that, let's define a sequence c as follows:

c_i = \begin{cases} a_i b_i & \mbox{if }a_i > b_i \\\ 0 & \mbox{if }a_i = b_i \\\ -a_i b_i & \mbox{if }a_i < b_i \end{cases}

You'd like to make ∑_{i=1}^n c_i (the sum of all elements of the sequence c) as large as possible. What is the maximum possible sum?

Input

The first line contains one integer t (1 ≤ t ≤ 10^4) — the number of test cases.

Each test case consists of two lines. The first line of each test case contains three integers x_1, y_1, z_1 (0 ≤ x_1, y_1, z_1 ≤ 10^8) — the number of 0-s, 1-s and 2-s in the sequence a.

The second line of each test case also contains three integers x_2, y_2, z_2 (0 ≤ x_2, y_2, z_2 ≤ 10^8; x_1 + y_1 + z_1 = x_2 + y_2 + z_2 > 0) — the number of 0-s, 1-s and 2-s in the sequence b.

Output

For each test case, print the maximum possible sum of the sequence c.

Example

Input


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


Output


4
2
0

Note

In the first sample, one of the optimal solutions is:

a = \{2, 0, 1, 1, 0, 2, 1\}

b = \{1, 0, 1, 0, 2, 1, 0\}

c = \{2, 0, 0, 0, 0, 2, 0\}

In the second sample, one of the optimal solutions is:

a = \{0, 2, 0, 0, 0\}

b = \{1, 1, 0, 1, 0\}

c = \{0, 2, 0, 0, 0\}

In the third sample, the only possible solution is:

a = \{2\}

b = \{2\}

c = \{0\}

import java.util.*;
import java.io.*;
public class Codeforces {
	static int MAX = (int)1e5+1;
	static boolean vis[];
	static ArrayList<Integer>graph[];
	static ArrayList<Integer>temp[] ;
	static ArrayList<Integer>list ;
	public static void main(String[] args) {
		Scanner input = new Scanner(System.in);
		int test = input.nextInt();
		while(test-->0) {
			int z1 =input.nextInt();
			int o1 = input.nextInt();
			int t1 =input.nextInt();
			int z2 = input.nextInt();
			int o2 = input.nextInt();
			int t2 = input.nextInt();
			long ans =0;
			
			int min = Math.min(t1, o2);
			ans+=(2*min);
			t1-=min;
			o2-=min;
			if(t2>0) {
				if(z1>0) {
					int mn = Math.min(t2,z1);
					t2-=mn;
					z1-=mn;
					
				}
				if(t1>0) {
					int mn = Math.min(t2,t1);
					t2-=mn;
					t1-=mn;
				}
			}
			if(o1>0) {
				if(z2>0) {
					int mn = Math.min(o1, z2);
					o1-=mn;
					z2-=mn;
				}
				if(o2>0) {
					int mn = Math.min(o2,o1 );
					o2-=mn;
					o1-=mn;
				}
			}
			if(t2>0) {
				int mn = Math.min(t2, o1);
				ans+=(-2*mn);
			}
			System.out.println(ans);
		}
		
	}
}
/*****************************************Notes**********************************************

1.Never use String.charAt for integers=> only works till 9 if integer val is 28,39,555
charAt would pick only the first digit. Better use Integer.parseInt() to convert string to Integer

2. even empty for loop can be used in certain cases.eg 'C - Pinkie Pie Eats Patty-cakes'. 
the check function of binary search. extra code but learnt some approach = SecondThreads implementation

3. The two list subsequence method eg:D. Binary String To Subsequences (works only in the case of two characters)


4. when there is a range that is computed there are case where index out of bounds might occur to keep
the ranges proper use min max trick=> leftfarthest = max(0,computed) && rightFarthest = min(n-1,computed)


5.Think in reverse order eg:puzzle game
bfs can be used to generate all possible combinations
*/