Luntik has decided to try singing. He has a one-minute songs, b two-minute songs and c three-minute songs. He wants to distribute all songs into two concerts such that every song should be included to exactly one concert.

He wants to make the absolute difference of durations of the concerts as small as possible. The duration of the concert is the sum of durations of all songs in that concert.

Please help Luntik and find the minimal possible difference in minutes between the concerts durations.

Input

The first line contains a single integer t (1 ≤ t ≤ 1000) — the number of test cases.

Each test case consists of one line containing three integers a, b, c (1 ≤ a, b, c ≤ 10^9) — the number of one-minute, two-minute and three-minute songs.

Output

For each test case print the minimal possible difference in minutes between the concerts durations.

Example

Input


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


Output


0
1
0
1

Note

In the first test case, Luntik can include a one-minute song and a two-minute song into the first concert, and a three-minute song into the second concert. Then the difference will be equal to 0.

In the second test case, Luntik can include two one-minute songs and a two-minute song and a three-minute song into the first concert, and two three-minute songs into the second concert. The duration of the first concert will be 1 + 1 + 2 + 3 = 7, the duration of the second concert will be 6. The difference of them is |7-6| = 1.
import os
import sys
from io import BytesIO, IOBase

_str = str
str = lambda x=b"": x if type(x) is bytes else _str(x).encode()

BUFSIZE = 8192


def sigma1(a):
    return sum(a)
def sigma2(a):
    return sum([i*i for i in a])
def sigma3(a):
    return sum([i*i*i for i in a])
def prodofpairs(a):
    return (sigma1(a)**2-sigma2(a))//2
def prodoftriplets(a):
    return (sigma1(a)**3-3*sigma1(a)*sigma2(a)+2*sigma3(a))//6
from collections import Counter,defaultdict
from math import gcd
from collections import deque
def bfs(graph, start=0):
    used = [False] * len(graph)
    used[start] = True
    q = [start]
    for v in q:
        for w in graph[v]:
            if not used[w]:
                used[w] = True
                q.append(w)


def layers(graph, start=0):
    used = [False] * len(graph)
    used[start] = True
    q, ret = [start], []
    level=[0]*len(graph)
    while q:
        nq = []
        ret.append(q)
        for v in q:
            for w in graph[v]:
                if not used[w]:
                    used[w] = True
                    nq.append(w)
                    level[w]=1+level[v]
        q = nq
    return level

import math
 
# function to find GCD of sub sequence
# of size k with max GCD in the array
def findMaxGCD(arr, n, k):
    high = max(arr)
    divisors = [0] * (high + 1)
    for i in range(n) :
        for j in range(1, int(math.sqrt(arr[i])) + 1):
            if (arr[i] % j == 0) :
                divisors[j] += 1
                if (j != arr[i] // j):
                    divisors[arr[i] // j] += 1
    for i in range(high, 0, -1):
        if (divisors[i] >= k):
            return i
def xdist(a,b):
    if(b[0]>=a[0]>=b[2] or b[0]<=a[0]<=b[2] ):
        return 0
    return min(abs(a[0]-b[0]),abs(a[0]-b[2]))
def ydist(a,b):
    if(b[1]>=a[1]>=b[3] or b[1]<=a[1]<=b[3] ):
        return 0
    return min(abs(a[1]-b[1]),abs(a[1]-b[3]))
def countdistx(i,j,k,obj):
    m=0
    for i1 in range(k):
        m+=xdist([i,j],obj[i1])
    return m
def countdisty(i,j,k,obj):
    m=0
    for i1 in range(k):
        m+=ydist([i,j],obj[i1])
    return m
from bisect import bisect_left
def dp(i,n,cost,a):
    if(cost==0):
        return 0
    if(cost<0):
        return float("Inf")
    l=[float("Inf")]
    for j in range(i,n+1):
        k=bisect_left(a,a[j]+cost,j)
        if(k<=n and a[k]==a[j]+cost):
            l.append(k-j)
    return min(l)
def isp(x):
    for i in range(2,int(math.sqrt(x))+1):
        if(x%i==0):
            return False
    return True
from bisect import bisect_right
from sys import stdout
def main():
    for _ in range(int(input())):
        a,b,c=map(int,input().split())
        a,b,c=a%2,b%2,c%2
        if(a==b==c):
            print(0)
        elif(a==c==1 and b==0):
            print(0)
        elif(a==b==1 and c==0):
            print(1)
        elif(b==c==1 and a==0):
            print(1)
        else:
            print(a+2*b+3*c)



    



            



    
        
        
            




        





        


        

main()

class FastIO(IOBase):
    newlines = 0

    def __init__(self, file):
        self._fd = file.fileno()
        self.buffer = BytesIO()
        self.writable = "x" in file.mode or "r" not in file.mode
        self.write = self.buffer.write if self.writable else None

    def read(self):
        while True:
            b = os.read(self._fd, max(os.fstat(self._fd).st_size, BUFSIZE))
            if not b:
                break
            ptr = self.buffer.tell()
            self.buffer.seek(0, 2), self.buffer.write(b), self.buffer.seek(ptr)
        self.newlines = 0
        return self.buffer.read()

    def readline(self):
        while self.newlines == 0:
            b = os.read(self._fd, max(os.fstat(self._fd).st_size, BUFSIZE))
            self.newlines = b.count(b"\n") + (not b)
            ptr = self.buffer.tell()
            self.buffer.seek(0, 2), self.buffer.write(b), self.buffer.seek(ptr)
        self.newlines -= 1
        return self.buffer.readline()

    def flush(self):
        if self.writable:
            os.write(self._fd, self.buffer.getvalue())
            self.buffer.truncate(0), self.buffer.seek(0)


class IOWrapper(IOBase):
    def __init__(self, file):
        self.buffer = FastIO(file)
        self.flush = self.buffer.flush
        self.writable = self.buffer.writable
        self.write = lambda s: self.buffer.write(s.encode("ascii"))
        self.read = lambda: self.buffer.read().decode("ascii")
        self.readline = lambda: self.buffer.readline().decode("ascii")


sys.stdin, sys.stdout = IOWrapper(sys.stdin), IOWrapper(sys.stdout)
input = lambda: sys.stdin.readline().rstrip("\r\n")




