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.*;
import java.util.*;

public class Main {
    
    public static void main(String[] args) throws IOException {
        Reader.init(System.in);
        int r = Reader.nextInt();
        int g = Reader.nextInt();
        int b = Reader.nextInt();

        int max = 0;
        for (int i = 0; i < 8; i++) {
            int poss = genPossibility(r, g, b, "00" + Integer.toString(i, 2));
            if (poss > max) max = poss;
        }

        System.out.println(max);
    }

    private static int genPossibility(int r, int g, int b, String decide){
        int ans = 0;
        int min;
        if (decide.charAt(decide.length() - 1) == '1') {
            ans += r/3;
            r = r % 3;
        }
        if (decide.charAt(decide.length() - 2) == '1') {
            ans += g/3;
            g = g % 3;
        }
        if (decide.charAt(decide.length() - 3) == '1') {
            ans += b/3;
            b = b % 3;
        }

        min = Math.min(r, Math.min(g, b));
        r -= min;
        g -= min;
        b -= min;
        ans += min + r/3 + g/3 + b/3;
        return ans;
    }
}

/**
 * Reader class based on the article at "https://www.cpe.ku.ac.th/~jim/java-io.html"
 * */
class Reader{
    private static BufferedReader reader;
    private static StringTokenizer tokenizer;
    static void init(InputStream inputStream){
        reader = new BufferedReader(new InputStreamReader(inputStream));
        tokenizer = new StringTokenizer("");
    }
    private static String next() throws IOException {
        String read;
        while (!tokenizer.hasMoreTokens()){
            read = reader.readLine();
            if (read == null || read.equals(""))
                return "-1";
            tokenizer = new StringTokenizer(read);
        }

        return tokenizer.nextToken();
    }
    static int nextInt() throws IOException{
        return Integer.parseInt(next());
    }

//    static long nextLong() throws IOException{
//        return Long.parseLong(next());
//    }

    //Get a whole line.
//    static String line() throws IOException{
//        return reader.readLine();
//    }
//
//    static double nextDouble() throws IOException{return Double.parseDouble(next());}
}



