#include <bits/stdc++.h>
long long exp(long long x, long long y, long long p) {
  long long res = 1;
  while (y) {
    if (y % 2) res = (res * x % p) % p;
    x = (x * x) % p;
    y /= 2;
  }
  return res;
}
long long expo(long long x, long long y) {
  long long res = 1;
  while (y) {
    if (y % 2) res = (res * x % ((long long)1e9 + 7)) % ((long long)1e9 + 7);
    x = (x * x) % ((long long)1e9 + 7);
    y /= 2;
  }
  return res;
}
int sv[1000000] = {0};
long long fact[1000007] = {0};
void facto() {
  fact[0] = 1;
  fact[1] = 1;
  for (int i = 2; i < 100007; i++)
    fact[i] = (fact[i - 1] * i) % ((long long)1e9 + 7);
}
void sve() {
  sv[0] = 1;
  sv[1] = 1;
  for (int i = 2; i * i <= ((long long)1e6 + 5); i++) {
    if (!sv[i]) {
      for (int j = 2 * i; j <= ((long long)1e6 + 5); j += i) sv[j] = 1;
    }
  }
}
long long ncr(long long n, long long r) {
  long long res = 1;
  res = fact[n];
  res =
      (res * (expo(fact[r], ((long long)1e9 + 7) - 2))) % ((long long)1e9 + 7);
  res = (res * (expo(fact[n - r], ((long long)1e9 + 7) - 2))) %
        ((long long)1e9 + 7);
  return res;
}
long long npr(long long n, long long r) {
  long long res = 1;
  res = fact[n];
  res = (res * (expo(fact[n - r], ((long long)1e9 + 7) - 2))) %
        ((long long)1e9 + 7);
  return res;
}
using namespace std;
int main() {
  ios::sync_with_stdio(0);
  cin.tie(0);
  cout.tie(0);
  long long t;
  cin >> t;
  while (t--) {
    int a[3];
    cin >> a[0] >> a[1] >> a[2];
    sort(a, a + 3);
    int sum = a[0] + a[1] + a[2];
    if (a[0] + a[1] <= a[2])
      cout << sum - a[2];
    else
      cout << sum / 2;
    cout << "\n";
  }
  return 0;
}
