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.

import java.util.Scanner;

/**
 *
 * @author Javi
 */
public class CielAndFlowers {

    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        int red = in.nextInt();
        int green = in.nextInt();
        int blue = in.nextInt();

        int numBouquets = 0;

        if (red > 3) {
            if (red % 3 == 0) {
                numBouquets += (red - 3) / 3;
                red = ((red - 3) % 3) + 3;
            } else {
                numBouquets += red / 3;
                red = red % 3;
            }
        }
        
        if (green > 3) {
            if (green % 3 == 0) {
                numBouquets += (green - 3) / 3;
                green = ((green - 3) % 3) + 3;
            } else {
                numBouquets += green / 3;
                green = green % 3;
            }
        }
        
        if (blue > 3) {
            if (blue % 3 == 0) {
                numBouquets += (blue - 3) / 3;
                blue = ((blue - 3) % 3) + 3;
            } else {
                numBouquets += blue / 3;
                blue = blue % 3;
            }
        }

        int byGrouping = byGrouping(red, green, blue);
        int byColour = byColour(red, green, blue);
        numBouquets += Math.max(byGrouping, byColour);
        System.out.println(numBouquets);

        in.close();
    }

    public static int byGrouping(int red, int green, int blue) {
        int min = Math.min(Math.min(red, green), blue);
        red = red - min;
        green = green - min;
        blue = blue - min;
        int numBouquets = min + red / 3 + green / 3 + blue / 3;
        return numBouquets;
    }

    public static int byColour(int red, int green, int blue) {
        int numBouquets = red / 3;
        red = red % 3;
        numBouquets += green / 3;
        green = green % 3;
        numBouquets += blue / 3;
        blue = blue % 3;
        numBouquets += Math.min(Math.min(red, green), blue);
        return numBouquets;
    }
}
