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.io.*;
import java.util.Arrays;
import java.util.InputMismatchException;

/*
By : SSD
*/

public class B {
	long mod = (long) (1e9 + 7);

	static class InputReader1 {

		private final InputStream st;
		private final byte[] buf = new byte[8192];
		private int cc, sc;
		private SpaceCharFilter f;

		public InputReader1(InputStream st) {
			this.st = st;
		}

		public int t() {
			if (sc == -1)
				throw new InputMismatchException();
			if (cc >= sc) {
				cc = 0;
				try {
					sc = st.read(buf);
				} catch (IOException e) {
					throw new InputMismatchException();
				}
				if (sc <= 0)
					return -1;
			}
			return buf[cc++];
		}

		public int nextInt() {
			int c = t();
			while (isSpaceChar(c)) {
				c = t();
			}
			int sgn = 1;
			if (c == '-') {
				sgn = -1;
				c = t();
			}
			int res = 0;
			do {
				res *= 10;
				res += c - '0';
				c = t();
			} while (!isSpaceChar(c));
			return res * sgn;
		}

		public long nextLong() {
			int c = t();
			while (isSpaceChar(c)) {
				c = t();
			}
			int sgn = 1;
			if (c == '-') {
				sgn = -1;
				c = t();
			}
			long res = 0;
			do {
				res *= 10;
				res += c - '0';
				c = t();
			} while (!isSpaceChar(c));
			return res * sgn;
		}

		public int[] nextIntArray(int n) {
			int a[] = new int[n];
			for (int i = 0; i < n; i++) {
				a[i] = nextInt();
			}
			return a;
		}

		public String readString() {
			int c = t();
			while (isSpaceChar(c)) {
				c = t();
			}
			StringBuilder res = new StringBuilder();
			do {
				res.appendCodePoint(c);
				c = t();
			} while (!isSpaceChar(c));
			return res.toString();
		}

		public String nextLine() {
			int c = t();
			while (isSpaceChar(c))
				c = t();
			StringBuilder res = new StringBuilder();
			do {
				res.appendCodePoint(c);
				c = t();
			} while (!isEndOfLine(c));
			return res.toString();
		}

		public boolean isSpaceChar(int c) {
			if (f != null)
				return f.isSpaceChar(c);
			return c == ' ' || c == '\n' || c == '\r' || c == '\t' || c == -1;
		}

		private boolean isEndOfLine(int c) {
			return c == '\n' || c == '\r' || c == -1;
		}

		public interface SpaceCharFilter {
			public boolean isSpaceChar(int ch);
		}
	}

	class OutputWriter {
		private final PrintWriter writer;

		public OutputWriter(OutputStream outputStream) {
			writer = new PrintWriter(new BufferedWriter(new OutputStreamWriter(outputStream)));
		}

		public OutputWriter(Writer writer) {
			this.writer = new PrintWriter(writer);
		}

		public void print(Object... objects) {
			for (int i = 0; i < objects.length; i++) {
				if (i != 0) {
					writer.print(' ');
				}
				writer.print(objects[i]);
			}
		}

		public void println(Object... objects) {
			print(objects);
			writer.println();
		}

		public void close() {
			writer.close();
		}
	}

	InputReader1 sc;
	OutputWriter out;

	public static void main(String[] ssd) throws Exception {
		new B().run();
	}

	void run() throws Exception {

		sc = new InputReader1(System.in);

		out = new OutputWriter(System.out);

		long s = System.currentTimeMillis();
		solve();
		tr(System.currentTimeMillis() - s + "ms");
		out.close();

	}

	private int min(int a, int b) {
		if (a > b) {
			return b;
		}
		return a;
	}

	private void solve() {
		int tt = sc.nextInt();
		while (tt-- > 0) {

			int[] a = sc.nextIntArray(3);
			int[] b = sc.nextIntArray(3);

			int m1 = min(a[2], b[1]);

			a[2] -= m1;
			b[1] -= m1;
			a[0] += a[2];
			a[2] = 0;
			int m2 = min(b[2], a[0]);

			b[2] -= m2;
			a[0] -= m2;

			int q = min(a[1], b[2]);

			int w = m1 - q;
			w *= 2;
			out.println(w);

		}

	}

	private boolean oj = System.getProperty("ONLINE_JUDGE") != null;

	private void tr(Object... o) {
		if (!oj)
			out.println(Arrays.deepToString(o));
	}
}
