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.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.util.Arrays;
import java.util.Comparator;

public class B {
    
    public static void main(final String[] args) throws IOException, InappropriateDataException {
        try (
                final BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
                final PrintWriter out = new PrintWriter(System.out)
                ) {
            for(String line = in.readLine(); line != null && !line.isEmpty(); line = in.readLine()) {
                final String[] parts = line.split(" ");
                if(parts.length != 3) {
                    throw new InappropriateDataException();
                }
                final int numberRedFlowers = Integer.parseInt(parts[0]);
                final int numberGreenFlowers = Integer.parseInt(parts[1]);
                final int numberBlueFlowers = Integer.parseInt(parts[2]);
                solve(numberRedFlowers, numberGreenFlowers, numberBlueFlowers, out);
                out.flush();
            }
        }
    }
    
    private static void solve(final int numberRedFlowers, final int numberGreenFlowers, final int numberBlueFlowers, final PrintWriter out) {
        final Integer[] numbers = new Integer[] {numberRedFlowers, numberGreenFlowers, numberBlueFlowers};
        int result = 0;
        int minRemainder = 3;
        for(int i = 0; i < 3; ++i) {
            result += numbers[i] / 3;
            minRemainder = Math.min(minRemainder, numbers[i] % 3);
        }
        result += minRemainder;
        Arrays.sort(numbers, new Comparator<Integer>() {
            public int compare(final Integer i1, final Integer i2) {
                return i1 % 3 - i2 % 3;
            }
        });
        if(numbers[0] > 0 && numbers[0] % 3 == 0 && numbers[1] % 3 == 2) {
            ++result;
        }
        out.println(result);
    }
    
    public static class InappropriateDataException extends Exception {
        
    } 
    
}