#include <bits/stdc++.h>
using namespace std;
long long int min(long long int a, long long int b) {
  if (a < b) return a;
  return b;
}
long long int max(long long int a, long long int b) {
  if (a > b) return a;
  return b;
}
long long int gcd(long long int a, long long int b) {
  if (a == 0 || b == 0) return (a + b);
  if (a < b) swap(a, b);
  return gcd(b, a % b);
}
vector<long long int> cnt[68];
int main() {
  int q;
  cin >> q;
  while (q--) {
    long long int c, m, x;
    cin >> c >> m >> x;
    long long int ans = 0;
    if (c <= m) {
      if (c >= x) {
        ans += x;
        c -= x;
        m -= x;
        x -= x;
      } else {
        ans += c;
        c -= c;
        m -= c;
        x -= c;
      }
    } else {
      if (m >= x) {
        ans += x;
        m -= x;
        c -= x;
        x -= x;
      } else {
        ans += m;
        m -= m;
        c -= m;
        x -= m;
      }
    }
    if (m > 0 && c > 0) {
      if (m > c) swap(m, c);
      long long int y2 = (2 * m - c) / 3, y1;
      y2 = max(0, y2);
      y1 = max(0, min((c - y2) / 2, m - 2 * y2));
      ans += y2;
      ans += y1;
    }
    cout << ans << endl;
  }
}
