import java.io.BufferedReader ;
import java.io.IOException ;
import java.io.InputStreamReader ;
import java.util.ArrayList ;
import java.util.Scanner ;
import java.util.StringTokenizer ;
class Duh{
Scanner scan
= new Scanner
( System .
in ) ; int test_cases = scan.nextInt ( ) ;
ArrayList< Long> list = new ArrayList<> ( ) ;
long count= 0 ;
for ( int m = 0 ; m< test_cases; m++ ) {
int num_of_games_played_by_elephant = scan.nextInt ( ) ;
for ( int i = 0 ; i< num_of_games_played_by_elephant; i++ ) {
String inputssss
= bf.
readLine ( ) ; int coins_face
= Integer .
parseInt ( st.
nextToken ( ) ) ; long no_of_coins
= Long .
parseLong ( st.
nextToken ( ) ) ; int guess
= Integer .
parseInt ( st.
nextToken ( ) ) ; if ( no_of_coins% 2== 0 ) {
if ( guess== 1 || guess == 2 ) {
count = no_of_coins/ 2 ;
}
}
else if ( no_of_coins% 2== 1 ) {
if ( guess!= coins_face) {
count = no_of_coins/ 2 ;
}
else {
count = ( no_of_coins / 2 ) + 1 ;
}
}
list.add ( count) ;
count= 0 ;
}
}
for ( int m = 0 ; m< list.toArray ( ) .length ; m++ ) {
System .
out .
println ( list.
get ( m
) ) ; }
}
}
aW1wb3J0IGphdmEuaW8uQnVmZmVyZWRSZWFkZXI7CmltcG9ydCBqYXZhLmlvLklPRXhjZXB0aW9uOwppbXBvcnQgamF2YS5pby5JbnB1dFN0cmVhbVJlYWRlcjsKaW1wb3J0IGphdmEudXRpbC5BcnJheUxpc3Q7CmltcG9ydCBqYXZhLnV0aWwuU2Nhbm5lcjsKaW1wb3J0IGphdmEudXRpbC5TdHJpbmdUb2tlbml6ZXI7CgpjbGFzcyBEdWh7CiAgICBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihTdHJpbmcgW11hcmdzKSB0aHJvd3MgSU9FeGNlcHRpb257CiAgICAgICAgU2Nhbm5lciBzY2FuID0gbmV3IFNjYW5uZXIoU3lzdGVtLmluKTsKICAgICAgICBpbnQgdGVzdF9jYXNlcyA9IHNjYW4ubmV4dEludCgpOwogICAgICAgIEFycmF5TGlzdDxMb25nPiBsaXN0ID0gbmV3IEFycmF5TGlzdDw+KCk7CiAgICAgICAgbG9uZyBjb3VudD0wOwogICAgICAgIGZvcihpbnQgbSA9MDttPHRlc3RfY2FzZXM7bSsrKXsKICAgICAgICBpbnQgbnVtX29mX2dhbWVzX3BsYXllZF9ieV9lbGVwaGFudCA9IHNjYW4ubmV4dEludCgpOwoKICAgICAgICBmb3IoaW50IGkgPTA7aTxudW1fb2ZfZ2FtZXNfcGxheWVkX2J5X2VsZXBoYW50O2krKyl7CiAgICAgICAgICAgIEJ1ZmZlcmVkUmVhZGVyIGJmID0gbmV3IEJ1ZmZlcmVkUmVhZGVyKG5ldyBJbnB1dFN0cmVhbVJlYWRlcihTeXN0ZW0uaW4pKTsKICAgICAgICAgICAgU3RyaW5nIGlucHV0c3NzcyA9IGJmLnJlYWRMaW5lKCk7CiAgICAgICAgICAgIFN0cmluZ1Rva2VuaXplciBzdCA9IG5ldyBTdHJpbmdUb2tlbml6ZXIoaW5wdXRzc3NzLCIgIik7CiAgICAgICAgICAgIGludCBjb2luc19mYWNlID0gSW50ZWdlci5wYXJzZUludChzdC5uZXh0VG9rZW4oKSk7CiAgICAgICAgICAgIGxvbmcgbm9fb2ZfY29pbnMgPSBMb25nLnBhcnNlTG9uZyhzdC5uZXh0VG9rZW4oKSk7CiAgICAgICAgICAgIGludCBndWVzcyA9IEludGVnZXIucGFyc2VJbnQoc3QubmV4dFRva2VuKCkpOwogICAgICAgICAgICBpZihub19vZl9jb2lucyUyPT0wKXsKICAgICAgICAgICAgICAgIGlmKGd1ZXNzPT0xIHx8IGd1ZXNzID09Mil7CiAgICAgICAgICAgICAgICAgICAgY291bnQgPW5vX29mX2NvaW5zLzI7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZSBpZihub19vZl9jb2lucyUyPT0xKXsKICAgICAgICAgICAgICAgIGlmKGd1ZXNzIT1jb2luc19mYWNlKXsKICAgICAgICAgICAgICAgICAgICBjb3VudCA9IG5vX29mX2NvaW5zLzI7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlbHNlIHsKCiAgICAgICAgICAgICAgICAgICAgY291bnQgPSAobm9fb2ZfY29pbnMgLyAyKSArIDE7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgbGlzdC5hZGQoY291bnQpOwogICAgICAgICAgICBjb3VudD0wOwogICAgICAgICAgICAgICAgIH0KCiAgICB9CiAgICBmb3IoaW50IG0gPSAwOyBtPGxpc3QudG9BcnJheSgpLmxlbmd0aDttKyspewogICAgICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4obGlzdC5nZXQobSkpOwogICAgfQp9Cn0K