description: Some number of people (this number is even) have stood in a circle. The people stand in the circle evenly. They are numbered clockwise starting from a person with the number 1. Each person is looking through the circle's center at the opposite person.
  
  <image> A sample of a circle of 6 persons. The orange arrows indicate who is looking at whom.
  
  You don't know the exact number of people standing in the circle (but this number is even, no doubt). It is known that the person with the number a is looking at the person with the number b (and vice versa, of course). What is the number associated with a person being looked at by the person with the number c? If, for the specified a, b, and c, no such circle exists, output -1.
  
  Input
  
  The first line contains one integer t (1 ≤ t ≤ 10^4) — the number of test cases. Then t test cases follow.
  
  Each test case consists of one line containing three distinct integers a, b, c (1 ≤ a,b,c ≤ 10^8).
  
  Output
  
  For each test case output in a separate line a single integer d — the number of the person being looked at by the person with the number c in a circle such that the person with the number a is looking at the person with the number b. If there are multiple solutions, print any of them. Output -1 if there's no circle meeting the given conditions.
  
  Example
  
  Input
  
  
  7
  6 2 4
  2 3 1
  2 4 10
  5 3 4
  1 3 2
  2 5 4
  4 3 2
  
  
  Output
  
  
  8
  -1
  -1
  -1
  4
  1
  -1
  
  Note
  
  In the first test case, there's a desired circle of 8 people. The person with the number 6 will look at the person with the number 2 and the person with the number 8 will look at the person with the number 4.
  
  In the second test case, there's no circle meeting the conditions. If the person with the number 2 is looking at the person with the number 3, the circle consists of 2 people because these persons are neighbors. But, in this case, they must have the numbers 1 and 2, but it doesn't meet the problem's conditions.
  
  In the third test case, the only circle with the persons with the numbers 2 and 4 looking at each other consists of 4 people. Therefore, the person with the number 10 doesn't occur in the circle.
solution: //This code is written by प्रविण शंखपाळ 
  
  //package wizard;
  
  import java.io.*;
  import java.math.*;
  import java.util.*;
  import java.text.*;
  
  public class Luna_Lovegood {
  
  	public static void main(String[] args) {
  
  //		try {
  
  		FastReader fr = new FastReader();
  		PrintWriter pt = new PrintWriter(System.out);
  
  		int t = fr.nextInt();
  
  		while (t > 0) {
  
  			long x = fr.nextLong(), y = fr.nextLong(), c = fr.nextLong();
  
  			long a = Math.max(x, y), b = Math.min(x, y);
  
  			long k = (a - b) * 2;
  
  			if (a - 2 * b < 0 || c > k) {
  				pt.println(-1);
  			} else {
  				pt.println(c <= k / 2 ? c + k / 2 : c - k / 2);
  
  			}
  
  			t--;
  
  		}
  		pt.close();
  
  //		} catch (
  //
  //		Exception e) {
  //			return;
  //		}
  	}
  
  	static int lower_bound(long[] arr, int begin, int end, long tar) {
  		while (begin < end) {
  			int mid = begin + (end - begin) / 2;
  			if (arr[mid] < tar)
  				begin = mid + 1;
  			else if (arr[mid] >= tar)
  				end = mid;
  		}
  		return begin;
  //		lower bound gives largest index of a number smaller than (if target is not present) or equal to target(if target is present) 
  //      for complete array use begin = 0 and end = n
  	}
  
  	static int upper_bound(long[] arr, int begin, int end, long tar) {
  		while (begin < end) {
  			int mid = begin + (end - begin) / 2;
  			if (arr[mid] <= tar)
  				begin = mid + 1;
  			else if (arr[mid] > tar)
  				end = mid;
  		}
  
  		return begin;
  //		upper bound gives smallest index of a number strictly greater than target
  //	    for complete array use begin = 0 and end = n
  	}
  
  	public static void mergeSort(String[] nameGo) {
  		if (nameGo.length > 1) {
  			String[] leftGo = new String[nameGo.length / 2];
  			String[] rightGo = new String[nameGo.length - nameGo.length / 2];
  			for (int so = 0; so < leftGo.length; so++) {
  				leftGo[so] = nameGo[so];
  			}
  			for (int ki = 0; ki < rightGo.length; ki++) {
  				rightGo[ki] = nameGo[ki + nameGo.length / 2];
  			}
  			mergeSort(leftGo);
  			mergeSort(rightGo);
  			merges(nameGo, leftGo, rightGo);
  		}
  	}
  
  	public static void merges(String[] nameH, String[] leftH, String[] rightH) {
  		int as = 0;
  		int bs = 0;
  		for (int i = 0; i < nameH.length; i++) {
  			if (bs >= rightH.length || (as < leftH.length && leftH[as].compareToIgnoreCase(rightH[bs]) < 0)) {
  				nameH[i] = leftH[as];
  				as++;
  			} else {
  				nameH[i] = rightH[bs];
  				bs++;
  			}
  		}
  	}
  
  	static void merge(long arr[], int l, int m, int r) {
  
  		int n1 = m - l + 1;
  		int n2 = r - m;
  
  		long L[] = new long[n1];
  		long R[] = new long[n2];
  
  		for (int i = 0; i < n1; ++i)
  			L[i] = arr[l + i];
  		for (int j = 0; j < n2; ++j)
  			R[j] = arr[m + 1 + j];
  
  		int i = 0, j = 0;
  
  		int k = l;
  		while (i < n1 && j < n2) {
  			if (L[i] <= R[j]) {
  				arr[k] = L[i];
  				i++;
  			} else {
  				arr[k] = R[j];
  				j++;
  			}
  			k++;
  		}
  
  		while (i < n1) {
  			arr[k] = L[i];
  			i++;
  			k++;
  		}
  
  		while (j < n2) {
  			arr[k] = R[j];
  			j++;
  			k++;
  		}
  	}
  
  	static void sort(long arr[], int l, int r) {
  		if (l < r) {
  
  			int m = l + (r - l) / 2;
  
  			sort(arr, l, m);
  			sort(arr, m + 1, r);
  
  			merge(arr, l, m, r);
  		}
  	}
  
  	static class Pair implements Comparable<Pair> {
  		int a, b;
  
  		Pair(int a, int b) {
  			this.a = a;
  			this.b = b;
  		}
  
  		public int compareTo(Pair o) {
  			// TODO Auto-generated method stub
  			if (this.a != o.a)
  				return Integer.compare(this.a, o.a);
  			else
  				return Integer.compare(this.b, o.b);
  			// return 0;
  		}
  
  		public boolean equals(Object o) {
  			if (o instanceof Pair) {
  				Pair p = (Pair) o;
  				return p.a == a && p.b == b;
  			}
  			return false;
  		}
  
  	}
  
  	static int binarySearch(int arr[], int first, int last, int key) {
  		int mid = (first + last) / 2;
  		while (first <= last) {
  			if (arr[mid] < key) {
  				first = mid + 1;
  			} else if (arr[mid] == key) {
  				return mid;
  			} else {
  				last = mid - 1;
  			}
  			mid = (first + last) / 2;
  		}
  		return -1;
  	}
  
  	static class FastReader {
  		BufferedReader br;
  		StringTokenizer st;
  
  		public FastReader() {
  			br = new BufferedReader(new InputStreamReader(System.in));
  		}
  
  		String next() {
  			while (st == null || !st.hasMoreElements()) {
  				try {
  					st = new StringTokenizer(br.readLine());
  				} catch (IOException e) {
  					e.printStackTrace();
  				}
  			}
  			return st.nextToken();
  		}
  
  		int nextInt() {
  			return Integer.parseInt(next());
  		}
  
  		long nextLong() {
  			return Long.parseLong(next());
  		}
  
  		double nextDouble() {
  			return Double.parseDouble(next());
  		}
  
  		String nextLine() {
  			String str = "";
  			try {
  				str = br.readLine();
  			} catch (IOException e) {
  				e.printStackTrace();
  			}
  			return str;
  		}
  	}
  }
  