Tired of boring office work, Denis decided to open a fast food restaurant.

On the first day he made a portions of dumplings, b portions of cranberry juice and c pancakes with condensed milk.

The peculiarity of Denis's restaurant is the procedure of ordering food. For each visitor Denis himself chooses a set of dishes that this visitor will receive. When doing so, Denis is guided by the following rules:

  * every visitor should receive at least one dish (dumplings, cranberry juice, pancakes with condensed milk are all considered to be dishes); 
  * each visitor should receive no more than one portion of dumplings, no more than one portion of cranberry juice and no more than one pancake with condensed milk; 
  * all visitors should receive different sets of dishes. 



What is the maximum number of visitors Denis can feed?

Input

The first line contains an integer t (1 ≤ t ≤ 500) — the number of test cases to solve.

Each of the remaining t lines contains integers a, b and c (0 ≤ a, b, c ≤ 10) — the number of portions of dumplings, the number of portions of cranberry juice and the number of condensed milk pancakes Denis made.

Output

For each test case print a single integer — the maximum number of visitors Denis can feed.

Example

Input

7
1 2 1
0 0 0
9 1 7
2 2 3
2 3 2
3 2 2
4 4 4


Output

3
0
4
5
5
5
7

Note

In the first test case of the example, Denis can feed the first visitor with dumplings, give the second a portion of cranberry juice, and give the third visitor a portion of cranberry juice and a pancake with a condensed milk.

In the second test case of the example, the restaurant Denis is not very promising: he can serve no customers.

In the third test case of the example, Denise can serve four visitors. The first guest will receive a full lunch of dumplings, a portion of cranberry juice and a pancake with condensed milk. The second visitor will get only dumplings. The third guest will receive a pancake with condensed milk, and the fourth guest will receive a pancake and a portion of dumplings. Please note that Denis hasn't used all of the prepared products, but is unable to serve more visitors.
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.StringTokenizer;

public class t1 {
	public static void main(String[] args) {
		try {
			BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
			String[] outputArr = new String[Integer.parseInt(reader.readLine())];
			String in;
			int mainCounter = 0;
			while ((in = reader.readLine()) != null) {
				int[] abc = new int[3];
				StringTokenizer st = new StringTokenizer(in, " ");
				int counter = 0;
				while (st.hasMoreTokens()) {
					abc[counter] = Integer.parseInt(st.nextToken());
					counter++;
				}
				int output = type1(abc);
				outputArr[mainCounter] = String.valueOf(output);
				mainCounter++;
			}
			System.out.println(String.join("\n", outputArr));
		} catch (Exception e) {
			e.printStackTrace();
		}
	}

	private static int type1(int[] abc) {
		int output = 0;
		for (int i = 0; i < 3; i++) {
			if (abc[i] > 0) {
				abc[i]--;
				output++;
			}
		}
		int[] tempAbc = new int[2];
		for (int i = 0; i < 3; i++) {
			int[] result = deletePair(abc, tempAbc);
			if (result[2] > 0) {
				abc[result[0]]--;
				abc[result[1]]--;
				output++;
				if (i < 2) tempAbc[i] = result[1] * 10 + result[0];
			} else break;
		}
		if (abc[0] > 0 && abc[1] > 0 && abc[2] > 0) {
			abc[findMaxIndex(abc)]--;
			output++;
		}
		return output;
	}

	private static int[] deletePair(int[] abc, int[] exclude) {
		int[] output = new int[]{-1, -1, -1};
		int maxIndex = findMaxIndex(abc);
		if( ( exclude[0] != 0 && exclude[1] !=0 ) ) {
			switch (maxIndex) {
				case 0:
					if((exclude[0]==10&&exclude[1]==20) || (exclude[0]==20&&exclude[1]==10)) {
						if (abc[1] > abc[2]) maxIndex = 1;
						else maxIndex = 2;
					}
					break;
				case 1:
					if((exclude[0]==10&&exclude[1]==21) || (exclude[0]==21&&exclude[1]==10)) {
						if (abc[0] > abc[2]) maxIndex = 0;
						else maxIndex = 2;
					}
					break;
				case 2:
					if((exclude[0]==20&&exclude[1]==21) || (exclude[0]==21&&exclude[1]==20)) {
						if (abc[1] > abc[0]) maxIndex = 1;
						else maxIndex = 0;
					}
					break;
			}
		}
		switch (maxIndex) {
			case 0:
				if ((abc[1] > abc[2] && exclude[0] != 10 && exclude[1] != 10) || (abc[1]>0 && (exclude[0]==20 || exclude[1] == 20) && exclude[0] != 10 && exclude[1] != 10 )) { //10
					output[0] = 0;
					output[1] = 1;
					output[2] = 1;
				} else if (abc[2] > 0 && exclude[0] != 20 && exclude[1] != 20) { //20
					output[0] = 0;
					output[1] = 2;
					output[2] = 1;
				} else {
					output[2] = 0;
				}
				break;
			case 1:
				if ((abc[0] > abc[2] && exclude[0] != 10 && exclude[1] != 10) || (abc[0]>0 && (exclude[0]==21 || exclude[1] == 21) && exclude[0] != 10 && exclude[1] != 10)) { //10
					output[0] = 0;
					output[1] = 1;
					output[2] = 1;
				} else if (abc[2] > 0 && exclude[0] != 21 && exclude[1] != 21) { //21
					output[0] = 1;
					output[1] = 2;
					output[2] = 1;
				} else {
					output[2] = 0;
				}
				break;
			case 2:
				if ((abc[0] > abc[1] && exclude[0] != 20 && exclude[1] != 20) || (abc[0]>0 && (exclude[0]==21 || exclude[1] == 21) && exclude[0] != 20 && exclude[1] != 20)) { //20
					output[0] = 0;
					output[1] = 2;
					output[2] = 1;
				} else if (abc[1] > 0 && exclude[0] != 21 && exclude[1] != 21) { //21
					output[0] = 1;
					output[1] = 2;
					output[2] = 1;
				} else {
					output[2] = 0;
				}
				break;
		}
		return output;
	}

	public static int findMaxIndex(int[] abc) {
		if (abc[0] == abc[1] && abc[0] == abc[2]) {
			return 0;
		}
		if (abc[0] > abc[1] && abc[0] > abc[2]) {
			return 0;
		} else if (abc[1] > abc[0] && abc[1] > abc[2]) {
			return 1;
		} else if (abc[2] > abc[0] && abc[2] > abc[1]) {
			return 2;
		}
		if (abc[1] == abc[2]) {
			return 1;
		} else if (abc[0] == abc[1]) {
			return 0;
		} else if (abc[2] == abc[0]) {
			return 0;
		}
		return 0;
	}
}