#include <bits/stdc++.h>
using namespace std;
int main() {
  long long int r, g, b, result = 0;
  cin >> r >> g >> b;
  if (r == g && g == b) {
    printf("%lld", g);
  } else {
    long long int result = 0;
    if (r % 3 == 0 && r != 0) {
      result += (r / 3) - 1;
      r = 3;
    } else {
      result += (r / 3);
      r = r % 3;
    }
    if (g % 3 == 0 && g != 0) {
      result += (g / 3) - 1;
      g = 3;
    } else {
      result += (g / 3);
      g = g % 3;
    }
    if (b % 3 == 0 && b != 0) {
      result += (b / 3) - 1;
      b = 3;
    } else {
      result += (b / 3);
      b = b % 3;
    }
    if (r >= 0 && r < 3 && b % 3 == 0 && g % 3 == 0) {
      result += (b / 3) + (g / 3);
      printf("%lld", result);
    } else if (b < 3 && b >= 0 && r % 3 == 0 && g % 3 == 0) {
      result += (r / 3) + (g / 3);
      printf("%lld", result);
    } else if (g >= 0 && g < 3 && r % 3 == 0 && b % 3 == 0) {
      result += (r / 3) + (b / 3);
      printf("%lld", result);
    } else {
      long long int temp;
      temp = min(r, g);
      temp = min(temp, b);
      result += temp;
      printf("%lld", result);
    }
  }
}

### Prompt

Your challenge is to write a Cpp solution to the following problem:

Fox Ciel has some flowers: r red flowers, g green flowers and b blue flowers. She wants to use these flowers to make several bouquets. There are 4 types of bouquets:

  * To make a "red bouquet", it needs 3 red flowers. 
  * To make a "green bouquet", it needs 3 green flowers. 
  * To make a "blue bouquet", it needs 3 blue flowers. 
  * To make a "mixing bouquet", it needs 1 red, 1 green and 1 blue flower. 



Help Fox Ciel to find the maximal number of bouquets she can make.

Input

The first line contains three integers r, g and b (0 ≤ r, g, b ≤ 109) — the number of red, green and blue flowers.

Output

Print the maximal number of bouquets Fox Ciel can make.

Examples

Input

3 6 9


Output

6


Input

4 4 4


Output

4


Input

0 0 0


Output

0

Note

In test case 1, we can make 1 red bouquet, 2 green bouquets and 3 blue bouquets.

In test case 2, we can make 1 red, 1 green, 1 blue and 1 mixing bouquet.

### Response

```cpp
#include <bits/stdc++.h>
using namespace std;
int main() {
  long long int r, g, b, result = 0;
  cin >> r >> g >> b;
  if (r == g && g == b) {
    printf("%lld", g);
  } else {
    long long int result = 0;
    if (r % 3 == 0 && r != 0) {
      result += (r / 3) - 1;
      r = 3;
    } else {
      result += (r / 3);
      r = r % 3;
    }
    if (g % 3 == 0 && g != 0) {
      result += (g / 3) - 1;
      g = 3;
    } else {
      result += (g / 3);
      g = g % 3;
    }
    if (b % 3 == 0 && b != 0) {
      result += (b / 3) - 1;
      b = 3;
    } else {
      result += (b / 3);
      b = b % 3;
    }
    if (r >= 0 && r < 3 && b % 3 == 0 && g % 3 == 0) {
      result += (b / 3) + (g / 3);
      printf("%lld", result);
    } else if (b < 3 && b >= 0 && r % 3 == 0 && g % 3 == 0) {
      result += (r / 3) + (g / 3);
      printf("%lld", result);
    } else if (g >= 0 && g < 3 && r % 3 == 0 && b % 3 == 0) {
      result += (r / 3) + (b / 3);
      printf("%lld", result);
    } else {
      long long int temp;
      temp = min(r, g);
      temp = min(temp, b);
      result += temp;
      printf("%lld", result);
    }
  }
}

```