#include <bits/stdc++.h>
using namespace std;
template <typename... T>
void read(T&... args) {
  ((cin >> args), ...);
}
long long int power(long long int x, long long int n) {
  if (n == 0) return 1;
  if (n % 2)
    return (x * power((x * x) % 1000000007, (n - 1) / 2)) % 1000000007;
  else
    return power((x * x) % 1000000007, n / 2);
}
long long int gcd(long long int a, long long int b) {
  if (a == 0) return b;
  return gcd(b % a, a);
}
long long int x, y, d;
void extended_euclid(long long int a, long long int b) {
  if (a == 0) {
    x = 1;
    y = 0;
    d = b;
  } else {
    extended_euclid(b % a, a);
    long long int temp = x;
    x = y;
    y = temp - (a / b) * y;
  }
}
long long int mod_inverse(long long int a, long long int m) {
  extended_euclid(a, m);
  return ((x + m) % m);
}
template <typename T>
class DSU {
 public:
  map<T, T> parent;
  map<T, T> size;
  void init(T x) {
    parent[x] = x;
    size[x] = 1;
  }
  T root(T x) {
    if (parent[x] == x) return x;
    return parent[x] = root(parent[x]);
  }
  void Union(T x, T y) {
    x = root(x);
    y = root(y);
    if (x != y) {
      if (size[x] < size[y]) swap(x, y);
      parent[y] = x;
      size[x] += size[y];
    }
  }
};
int main() {
  ios_base::sync_with_stdio(false), cin.tie(NULL), cout.tie(NULL);
  int t;
  cin >> t;
  while (t--) {
    long long int c, m, no;
    read(c, m, no);
    long long int ans = min(c, m);
    if (c + m + no >= 3 * ans)
      cout << ans << '\n';
    else
      cout << (c + m + no) / 3 << '\n';
  }
  return 0;
}
