// No.2110 012 Matching
package main

import (
	"bufio"
	"fmt"
	"os"
	"strconv"
	"strings"
)

func min(a, b int) int {
	if a <= b {
		return a
	} else {
		return b
	}
}

func main() {
	sc := bufio.NewScanner(os.Stdin)
	sc.Scan()
	T, _ := strconv.Atoi(sc.Text())

	wr := bufio.NewWriter(os.Stdout)
	defer wr.Flush()

	for i := 0; i < T; i++ {
		sc.Scan()
		ss := strings.Split(sc.Text(), " ")
		A, _ := strconv.Atoi(ss[0])
		B, _ := strconv.Atoi(ss[1])
		C, _ := strconv.Atoi(ss[2])

		point := 0
		p02 := min(A, C)
		point += 2 * p02
		A -= p02
		C -= p02

		p11 := B / 2
		point += 2 * p11
		B -= 2 * p11

		p22 := C / 2
		point += 1 * p22

		p01 := min(A, B)
		point += 1 * p01

		fmt.Fprintln(wr, point)
	}
}