#include <bits/stdc++.h>
using namespace std;
inline void RD(int &ret) {
  char c;
  do {
    c = getchar();
  } while (c < '0' || c > '9');
  ret = c - '0';
  while ((c = getchar()) >= '0' && c <= '9') ret = ret * 10 + (c - '0');
}
bool vis1[105], vis2[105];
void tired() {
  int r, g, b;
  cin >> r >> g >> b;
  int n1 = r % 3;
  int n2 = g % 3;
  int n3 = b % 3;
  int num = 0;
  if (n1 <= r && n1 <= g && n1 <= b)
    num = max(num, (r - n1) / 3 + (g - n1) / 3 + (b - n1) / 3 + n1);
  if (n2 <= r && n2 <= g && n2 <= b)
    num = max(num, (r - n2) / 3 + (g - n2) / 3 + (b - n2) / 3 + n2);
  if (n3 <= r && n3 <= g && n3 <= b)
    num = max(num, (r - n3) / 3 + (g - n3) / 3 + (b - n3) / 3 + n3);
  cout << num << endl;
}
int main() {
  tired();
  return 0;
}
